C1 · Interpark · 2011
Ticket Waiting Room
외부 솔루션의 반복 장애를 해결하기 위해 Redis 기반 분산 진입제어 플랫폼을 자체 설계·개발하고, 30만~40만 명이 동시에 접속하는 대형 공연 예매에 적용했습니다.


01 Problem
티켓 예매의 대규모 접속 제어를 외부 솔루션 NetFUNNEL에 의존하고 있었으나, 반복적인 장애로 안정적인 운영이 어려웠습니다.
인기 공연 예매 오픈 시 30만~40만 명이 동시에 접속하는 환경에서 대기 사용자와 진입 허용 인원을 안정적으로 관리할 구조가 필요했습니다.
외부 의존도를 낮추고, 예매 서비스 특성에 맞게 대기열과 진입 규모를 직접 제어하는 자체 플랫폼을 추진했습니다.
02 Role
- 외부 진입제어 솔루션 대체 플랫폼 아키텍처 설계 및 개발
- Redis Sorted Set 기반 분산 대기열 및 사용자 상태 관리 구조 설계
- 대기 사용자 취합 및 진입 허용 제어 로직 개발
- Redis Lua Scripting 기반 대기열 처리 로직 구현
- Go 기반 진입제어 Backend 개발 및 gRPC 활용
- 서비스 배포, 운영 안정화 및 후속 고도화 기술 인계
03 Approach
01Redis Sorted Set 분산 대기열
여러 Redis 서버에 대기 사용자 정보를 분산 저장하고, Sorted Set으로 사용자별 대기 순서를 관리했습니다. 단일 서버에 모든 대기 상태가 몰리지 않는 구조입니다.
02취합 서버 기반 진입 허용 제어
별도의 취합 서버가 각 Redis의 상위 순위 사용자를 모아 진입 대상을 결정하고 상태를 변경합니다.
관리자가 진입 허용 인원을 설정하면 그 규모에 맞춰 단계적으로 진입시킵니다. 대기 관리와 진입 제어를 분리해 공연별로 규모를 조정할 수 있게 했습니다.
03Lua Scripting으로 Redis 처리 최적화
대기열 조회와 상태 변경에 필요한 여러 명령을 Lua Script로 Redis 내부에서 일괄 실행해 네트워크 왕복을 줄이고, 같은 인스턴스 내 명령을 원자적으로 처리했습니다.
04설계에서 운영까지
기술 책임자와 설계 방향을 조율해 아키텍처를 확정하고, 핵심 기능 개발부터 배포·운영 안정화까지 직접 수행해 싸이·BTS 등 대형 공연 예매에 적용했습니다.
팀장을 맡은 뒤 시스템을 팀원에게 인계하고 후속 고도화를 추진했습니다.
05진입제어 플랫폼 공통화
티켓 예매뿐 아니라 단시간에 접속이 몰리는 이벤트·마케팅 서비스에서도 쓸 수 있도록 서비스별 진입 규모를 제어하는 공통 구조로 확장했습니다.
04 Architecture
05 Stack
- Go
- Redis Sorted Set
- Lua Scripting
- gRPC
06 Outcome
- 외부 솔루션 대체
- 반복 장애가 나던 NetFUNNEL을 자체 플랫폼으로 대체해 운영 안정성 개선
- 대규모 동시 접속 대응
- 30만~40만 명 동시 접속 공연 예매에 분산 진입제어 적용
- 분산 대기열 구현
- Sorted Set · Lua · 취합 서버로 대기 순서와 진입 허용 제어
- 공통 플랫폼화
- 공연 예매를 넘어 이벤트·마케팅 서비스까지 활용 범위 확대
- 설계부터 운영까지
- 설계·구현·상용 운영 안정화 후 팀장으로서 인계와 후속 고도화