AI Briefing

Redis Pub/Sub을 활용한 쿠폰 발급 비동기 처리

·2023.08.08 02:00

올리브영이 Redis Pub/Sub과 List를 결합하여 쿠폰 발급 시 발생하는 과발급 및 데이터 유실 문제를 해결했다.

올리브영은 대규모 트래픽이 몰리는 세일 기간 동안 사용자 대기 시간을 줄이기 위해 기존의 동기(Sync) 방식 쿠폰 발급 프로세스를 비동기(Async) 방식으로 개선했다.

초기에는 Redis Pub/Sub을 도입했으나, 다중 Worker 환경에서 동일한 메시지를 여러 Worker가 동시에 수신하여 발생하는 쿠폰 과발급 문제와 메시지 전송 보장이 되지 않아 발생하는 데이터 유실 문제를 겪었다.

이를 해결하기 위해 최종적으로 다음과 같은 아키텍처를 적용했다:

  • Redis Pub/Sub: 특정 Worker에게 작업을 할당하기 위한 신호 전달용으로 사용
  • Redis List: 실제 쿠폰 발급 데이터를 저장하는 큐(Queue) 역할 수행
  • Worker 로직: 할당받은 Worker가 자신의 전용 List 크기를 체크한 뒤, LPop을 통해 데이터를 가져와 안전하게 처리

이러한 구조를 통해 데이터 유실 없이 안정적으로 쿠폰을 발급하며 높은 트래픽을 처리할 수 있는 환경을 구축했다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.