배경
배달의민족은 빼빼로데이 등 특정 이벤트 시즌에 평소 대비 수십 배의 트래픽이 발생합니다. 쿠폰 발급, 이벤트 참여, 주문 폭주가 동시에 일어나는 극한 상황에 대비해야 했습니다.
도전 과제
이벤트 시작 시각에 수십만 사용자가 동시 접속하여 쿠폰을 발급받으려 합니다. DB 락 경합, 서버 과부하, 사용자 경험 저하를 방지하면서 정확한 수량의 쿠폰만 발급해야 했습니다. 또한 이벤트 시스템의 장애가 주문 시스템에 전파되지 않도록 격리가 필요했습니다.
해결 방안
이벤트 시스템을 독립 인프라로 분리하고, 쿠폰 발급은 Redis 기반 선착순 큐를 사용했습니다. 실제 쿠폰 DB 반영은 후처리 시스템에서 비동기로 처리하여 DB 부하를 분산했습니다. 독립 인증 시스템, 이벤트 메인 시스템, 쿠폰 후처리 시스템 3개로 분리 운영했습니다.
결과
이벤트 트래픽 10배 이상 증가에도 시스템 정상 운영, 쿠폰 정확 발급 100% 달성, 주문 시스템 영향도 제로.
핵심 인사이트
- 1.이벤트 시스템과 주문 시스템의 장애 격리는 필수
- 2.Redis 선착순 큐로 DB 락 경합 회피
- 3.비동기 후처리로 피크 트래픽 분산
- 4.부하 테스트(Spike Test)를 통한 사전 검증