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