피드로 돌아가기
올리브영 초대량 쿠폰 발급 시스템 개선기
올리브영 테크블로그올리브영 테크블로그
Backend

올리브영 초대량 쿠폰 발급 시스템 개선기

올리브영이 쿠폰 대량발급 시스템의 Exchange를 Direct에서 Fanout으로 변경하고 작업 주체를 분리해 처리 시간을 12~15시간에서 5~6시간으로 단축

2024년 12월 11일8intermediate

Context

BABY 등급만 1천만 명 이상인 멤버십 고객들에게 쿠폰을 발급하는 데 12~15시간이 소요되고 있었다. 백오피스에서 대량발급 작업을 진행할 때 많은 리소스를 소모해 다른 업무에 영향을 주었고, 긴급 배포나 시스템 변경 시 안정성이 보장되지 않았다. 멤버십 승급과 쿠폰 발급 사이의 시간 간격이 발생해 고객 경험이 저하되었다.

Technical Solution

  • RabbitMQ Exchange 타입 변경: Direct Exchange에서 Fanout Exchange로 변경하여 지정된 단일 Queue 대신 Multi Queue로 메시지 적재
  • 멀티 큐 자동 생성: Exchange에 바인딩되는 Multi Queue Name을 Task를 활용해 동적으로 생성
  • 중복 처리 방지: Consume 시 대량발급 ID값에 따라 분기 처리하여 동일 메시지의 중복 발급 차단
  • 작업 주체 분리: 백오피스에서 발급 대상 조회 및 전송 역할을 Trigger Worker라는 별도 시스템으로 이관
  • 두 계층 구조 구현: Trigger Worker가 발급 대상을 조회해 발급 Worker에 전달하는 방식으로 처리

Impact

  • 작업 시간 단축: 기존 12~15시간에서 5~6시간으로 감소
  • 승급과 쿠폰 발급 간격 감소: 고객이 인지하는 시간 차이 축소

Key Takeaway

대량 작업의 처리 시간을 단축하려면 Exchange 타입 변경을 통한 병렬 처리 구조와 작업 주체의 독립적 분리를 함께 고려해야 한다. 이를 통해 백오피스 리소스 영향을 최소화하면서 안정성 있는 장시간 작업 운영이 가능하다.


RabbitMQ를 사용하는 대량 배치 작업 시스템에서 Direct Exchange 대신 Fanout Exchange를 도입하고 처리 담당 워커를 별도 시스템으로 분리하면, 초기 요청 처리 지연을 줄이면서도 기존 백오피스의 리소스 영향을 최소화할 수 있다.

원문 읽기