트래픽 집중 상황을 고려한 MSA 기반 타임딜 이커머스 플랫폼
한정된 시간, 수량 안에서 주문이 집중되는 타임딜 커머스 환경의 MSA(Microservices Architecture) 기반 커머스 플랫폼입니다.
트래픽 집중 상황에서 발생할 수 있는 동시성, 정합성, 서비스 병목 문제 등을 해결하기 위해 동시성 제어, 비동기 이벤트 기반 서비스 연동, Redis · Kafka · 모니터링 도구를 활용한 트래픽 처리 구조를 설계하고 구현했습니다.
- MSA 기반 서비스 분리로 확장성 고려
- Redis, Kafka로 대규모 트래픽 안정적 처리
- 동시성 문제 없는 서비스
- Docker 기반 서비스별 실행 환경 통일
- docker-compose를 통한 인프라 및 서비스 일괄 실행
- Prometheus + Grafana를 활용한 메트릭 수집 및 시각화
- Zipkin을 통한 분산 트레이싱 및 병목 지점 분석
- 환경 변수 설정
- Docker 컨테이너 실행
docker-compose up -d
- 주문-재고-포인트 서비스 간 분산 트랜잭션을 Saga 패턴으로 관리하고, 장애 발생 시 자동 보상 트랜잭션 수행
- 이벤트 발행 성공률 99.9% 달성
- Outbox 패턴과 FOR UPDATE SKIP LOCKED를 조합해 DB 트랜잭션과 메시지 발행 간의 원자성 확보
- 멱등성 키 기반의 재시도 전략을 통해 네트워크 장애 및 Kafka 일시 장애 상황에서도 95% 이상의 복구율 구현
- 대규모 트래픽으로 인한 DB 병목을 해결하기 위해 Redis Sorted Set 기반 대기열/활성열 구조 도입
- 전용 Executor(Thread Pool)와 CompletableFuture를 적용해 공용 스레드 풀 간섭 제거 및 비동기 처리 성능 최적화
- User Index Key 관리로 1인 1토큰 원칙 보장 및 중복 진입 원천 차단
- Optimistic Lock으로 재고 수정 시 정합성 유지, Redis 선제어로 불필요한 DB 요청 사전 차단
- Redis Sorted Set 기반의 스케줄러 큐를 통해 타임딜 시작/종료 자동화
- CQRS 적용 & 2-Tier 전략으로 주문 조회 성능 50배 향상 (500ms -> 10ms)
- Cache Hit Rate 85~90% 유지로 시스템 처리 효율 극대화
- PortOne 기반 결제 파이프라인 구축으로 결제 준비/완료/취소 구현
- 결제 취소 시 Kafka 이벤트 발행으로 비동기 도메인 연동
- 포인트 적립/차감을 Kafka 이벤트로 연동해 도메인 간 결합도 최소화
- Redisson 분산 락으로 다중 요청 상황에서도 포인트 데이터 무결성 보장
| 이름 | 담당 업무 |
|---|---|
| 변영재(팀장) | 인증 및 인가, 사용자, 포인트 |
| 김민수 | 결제, 모니터링 |
| 민송경 | 대기열, 배포 |
| 유민아 | 상품, 타임딜, 재고 |
| 차초희 | 주문 |
- Java 21
- Spring Boot 3.5.8
- Spring Security
- Spring Data JPA
- Spring Data Redis
- Spring Kafka
- PostgreSQL
- Spring Cloud Gateway
- Eureka
- OpenFeign
- AWS
- ECS
- RDS (PostgreSQL)
- Elastic Cache (Redis)
- MSK (Kafka)
- ECR
- Docker & Docker Compose
- Github Actions
- Prometheus
- Grafana
- Zipkin
rush-deal
├── api-gateway # 요청 라우팅 및 인증 처리
├── auth-service # 인증 및 토큰 관리
├── discovery-service # 서비스 디스커버리 (Eureka)
├── order-service # 주문 처리
├── payment-service # 결제 처리
├── product-service # 상품 및 옵션 관리
├── timedeal-service # 타임딜 및 재고 도메인
├── user-service # 사용자 및 포인트 관리
├── queue-service # 대기열 서비스
├── monitoring # 모니터링
├── docker-compose.yml
├── docker-compose-monitoring.yml
└── README.md


