문제 상황

대기열 시스템의 핵심은 높은 트래픽을 효과적으로 분산 처리하면서 대기 순서를 유지하고, 실시간으로 사용자에게 대기 순위를 제공하는 것이었습니다.

비교군

해결

Kafka와 Redis Sorted Set의 조합을 통해 대기열 시스템을 구현하였습니다. 각 시스템의 장점을 살려 다음과 같은 구조를 설계하였습니다.

  1. Kafka를 통해 트래픽 분산 처리: 사용자가 대기열에 접근할 때, Kafka를 사용하여 각 요청을 비동기적으로 분산시켰습니다. Kafka는 메시지를 여러 파티션으로 분산 처리할 수 있기 때문에, 동시에 많은 사용자가 대기열에 들어오더라도 높은 처리량을 유지할 수 있었습니다.
  2. Redis Sorted Set으로 대기열 순서 관리: 각 사용자가 대기열에 들어오면 Kafka를 통해 메시지가 처리되고, Redis Sorted Set에 사용자 ID와 대기 순위 점수를 저장했습니다. Sorted Set의 점수 기반 정렬 기능을 이용해 사용자의 대기 순위를 실시간으로 관리하고, 필요할 때마다 O(log N) 복잡도로 빠르게 조회할 수 있었습니다.
  3. 실시간 순위 조회 및 피드백: 사용자는 자신의 대기 순위를 실시간으로 확인할 수 있었습니다. Redis의 고속 읽기/쓰기 성능 덕분에 대기 중인 사용자가 자신의 위치를 조회하거나, 순위가 변경될 때 즉각적으로 알림을 받을 수 있었습니다.