분기마다 열리는 할인 이벤트 날, 오픈 1분 동안 평소의 40배 요청이 몰립니다. 이 순간을 위해 서버를 40배로 늘리는 것은 답이 아닙니다. 1년 중 몇 분을 위해 치르는 낭비가 너무 크기 때문입니다. 우리의 답은 대기열입니다.
대기열의 원리
원리는 은행 창구와 같습니다. 처리 능력은 정해져 있으니, 능력을 넘는 요청은 번호표를 받고 기다립니다. 중요한 것은 두 가지입니다. 지금 몇 번째인지 정직하게 보여줄 것, 그리고 줄이 실제로 줄어들 것. 이 둘만 지켜지면 사용자는 기다림을 받아들입니다.
시스템은 조용했고, 줄은 정직하게 줄었습니다.
기술적으로는 요청을 큐에 넣고 처리 가능한 속도로만 꺼내 쓰는 구조입니다. 큐 앞단은 가볍게 만들어 수십만 명이 붙어도 버티게 하고, 뒷단의 결제와 재고 처리는 평소 속도를 유지합니다. 장애가 나도 큐에 쌓인 요청은 사라지지 않으니 복구 후 이어서 처리할 수 있습니다.
지난 이벤트에서 최대 대기 인원은 11만 명, 평균 대기 시간은 74초였습니다. 불만 문의는 열두 건에 그쳤습니다. 시스템은 조용했고, 줄은 정직하게 줄었습니다.