올영세일 선착순 쿠폰, 미발급 0%를 향한 여정
·2025.12.15 09:00
핵심 내용
올리브영은 비동기 시스템의 Time Gap과 원자성 부재로 인한 쿠폰 미발급 문제를 Redis Lua 스크립트 도입을 통해 해결하고자 했다.
1 / 2
자세히 보기
올리브영의 선착순 쿠폰 시스템은 대량 트래픽 처리를 위해 RabbitMQ 기반의 비동기 구조와 Redis를 활용한 수량 관리를 채택하고 있다. 하지만 2025년 6월 올영세일 운영 중, 1차 유효성 검사 통과 후 실제 워커에서 처리가 실패하는 미발급 문제가 발생했다.
문제의 근본 원인은 세 가지로 분석되었다.
- Time Gap: 1차 검증과 워커의 2차 검증 사이의 시간 간극으로 인한 경합 상태 발생
- Double Validation Overhead: 비동기 로직 수행 중 발생하는 이중 검증의 비효율성
- Redis 원자성(Atomicity) 부재:
GET과INCR명령이 분리되어 실행되면서 발생하는 레이스 컨디션
이를 해결하기 위해 먼저 수량을 앞단에서 미리 차감하는 선차감 방식을 시도했으나, 여전히 원자성 문제가 잔존함을 확인했다. 최종적으로는 여러 명령을 하나의 원자적 단위로 실행할 수 있는 Lua 스크립트를 적용하여 데이터 정합성을 확보하는 방향으로 개선을 추진했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.