올영세일 쿠폰, 이제 미발급 걱정 끝!
by DD
5개월 전
조회수 54
올영세일 선착순 쿠폰 발급 시스템에서 미발급 문제 발생, 고객 불만 및 CS 비용 증가
Redis 기반의 기존 시스템에서 Time Gap, 원자성 부재 등의 문제점 발견
이중 카운터 전략 도입으로 미발급 건수 0건 달성 및 정확도 100% 확보
쿠폰 발급 시스템 아키텍처 분석
올리브영 쿠폰 시스템은 RabbitMQ를 활용한 비동기 방식으로 설계되어 트래픽 급증에 대응했다. 기존 시스템은 Redis를 사용하여 발급 수량을 관리했지만, Time Gap으로 인해 미발급 문제가 발생했다. 따라서, 이중 카운터 전략을 통해 데이터 정합성을 강화했다.
Lua 스크립트 vs 이중 카운터: 트레이드오프
Lua 스크립트는 원자성을 보장하지만, 성능 저하라는 단점이 존재한다. 이중 카운터 전략은 Redis의 두 개 키를 사용하여 원자성을 확보하면서도, 성능 저하를 최소화했다. 따라서, 데이터 정합성과 응답 속도 사이의 균형을 맞췄다.
이중 카운터 전략의 기술적 구현
이중 카운터 전략은 발급 요청 수량과 실제 발급 수량을 분리하여 관리한다. countReq 키를 먼저 증가시켜 동시 요청을 차단하고, count 키는 성공적인 발급 요청에 대해서만 증가시킨다. 결과적으로, 미발급 문제를 해결하고 데이터 일관성을 보장하며, Redis의 성능을 유지했다.