/coffee-shop

커피 주문 서비스

Primary LanguageJava

coffee-shop

  • 선착순 쿠폰 발급 이벤트를 진행하는 상황에서 필요한 신청, 대기열 조회, 발급 기능을 개발하였습니다.
  • 웹 서버 한 대와 DB 서버 한 대로 최소한의 시스템 구성으로 시작하여, 점진적으로 트래픽을 증가시키며 짧은 시간에 요청이 몰리는 상황에서도 안정적으로 서비스를 운영할 수 있도록 시스템 구조를 확장해 나가는 경험을 목표로 설정했습니다.

사용 기술 및 환경

  • Java, Spring Boot, Gradle
  • MariaDB, Redis
  • GitHub Actions, Naver Cloud Platform
  • K6, Pinpoint, Grafana, Prometheus
  • IntelliJ

Architecture

ERD

주요 기능

  • 비즈니스 로직 링크 추가
  • api 문서 링크 추가
  1. 쿠폰 발급 신청
  2. 쿠폰 발급
  3. 대기열 조회 & 발급 결과 조회

프로젝트를 진행하며 고민한 Technical Issue

  • 자세한 사항 : 링크 추가
  • 단일 서버 환경에서는 spring으로 큐 구현, 분산 서버 환경에서는 redis로 큐를 관리하여 운영 환경 특성을 고려하여 설계
  • MariaDB 장애 상황 대비를 위한 Replication
  • Sentinel을 통한 자동 페일오버 메커니즘 설정으로 장애 발생 시 슬레이브를 새로운 마스터로 자동 승격하여 서비스 중단 시간을 최소화
  • K6 테스트 스크립트를 작성하여 대규모 트래픽 시나리오를 시뮬레이션, 성능 튜닝
  • Prometheus와 Grafana를 연동하여 인프라 및 애플리케이션 메트릭을 실시간으로 수집 및 시각화