1. 개요
본 시스템은 이벤트 오픈, 한정 수량 판매, 선착순 참여처럼 짧은 시간에 많은 사용자 트래픽이 몰리는 상황에서 서비스 과부하를 방지하고, 공정한 순서로 사용자 진입을 제어하기 위한 대기열 시스템이다.
핵심 목표는 다음과 같다.
- 사용자 요청을 즉시 비즈니스 서버로 전달하지 않고 대기열에서 흡수한다.
- Redis 기반 순번 관리를 통해 공정한 진입 순서를 보장한다.
- 동시에 입장 가능한 사용자 수를 제한해 다운스트림 부하를 제어한다.
- 중복 요청, 재시도, 장애 상황에서도 중복 처리를 방지하고 정합성을 유지한다.
- Kafka 기반 이벤트 발행을 통해 후속 처리와 감사 이력을 비동기로 분리한다.
2. 기술 선택
Redis
Redis는 대기열의 현재 상태를 빠르게 관리하기 위해 사용한다.
- 대기 순번 관리
- 현재 입장 가능 사용자 관리
- 사용자 상태 조회
- 활성 사용자 만료 처리
- 중복 진입 방지
Redis는 대기열의 현재 상태와 입장 제어를 담당하는 실시간 제어 계층 역할을 맡는다.
Kafka
Kafka는 대기열 상태 변경 이벤트를 비동기로 전달하기 위해 사용한다.