
백엔드
Redis Pub/Sub을 활용한 쿠폰 발급 비동기 처리
두줄요약
올영세일 쿠폰 발급의 대기 시간을 줄이기 위해 Redis Pub/Sub 기반 비동기 처리를 적용했습니다. 이후 과발급과 유실 문제를 보완하며 Worker별 List 저장소로 발급 흐름을 개선했습니다.
문제 상황
- 올영세일 선착순 쿠폰 발급 시 트래픽 집중으로 대기 시간 증가
- 기존 동기 처리로 DB Connection 등 자원 점유 심화
- 다중 Worker 환경에서 쿠폰 과발급과 미발급 이슈 발생
원인 분석
- 발급 요청과 DB INSERT가 한 흐름으로 묶인 동기 구조
- Pub/Sub 특성상 다수 Subscriber가 같은 메시지를 모두 수신하는 구조
- 메시지 유실 가능성과 전송 보장 부재를 고려하지 못한 설계
해결 방법
- 유효성 검사는 기존 로직 유지, 발급 처리는 Worker로 위임
- Redis Pub/Sub으로 1개의 Worker만 선택해 처리 경로 분기
- Redis List에 발급 데이터를 저장하고 LPop으로 꺼내 처리
