Backend/DevOps
스파이크 트래픽 대응 전략
티켓팅/플래시세일 같은 급격한 쓰기 폭주 상황을 안정적으로 처리하는 핵심 전략을 정리합니다.
스파이크 트래픽 대응 전략
문제 특성
스파이크 트래픽은 읽기보다 쓰기 병목을 만듭니다. 핵심 리스크는 DB 락 경합과 커넥션 고갈입니다.
우선 적용할 3가지
- 동기 처리 -> 큐 기반 비동기 처리
- 입장 제어(rate limit + 대기열)
- 재고/자원 사전 할당(분산)
1) 큐 기반 비동기
API는 즉시 "접수"를 반환하고 실제 처리는 worker가 순차 처리합니다. 이 방식으로 DB에 직접 몰리는 순간 쓰기를 완화합니다.
2) 사용자 입장 제어
- 초당 허용량 제한
- 대기 순번 제공
- 클라이언트 폴링 주기 통제
사용자 체감과 시스템 보호를 동시에 잡는 데 가장 효과적입니다.
3) 멱등성 보장
같은 요청이 재시도돼도 결과가 한 번만 반영되도록 키 설계가 필요합니다.
예: request_id, user_id + event_id
자주 하는 실수
- 재시도 정책만 넣고 멱등성 키 없음
- 큐 길이/처리량 모니터링 없이 worker만 증설
- 실패 시 보상/환불 경로 미정의
요약
스파이크 대응의 본질은 처리량 확장이 아니라 쓰기 경합 제어입니다. 큐, 입장 제어, 멱등성 세 축을 먼저 고정하면 장애 확률이 크게 줄어듭니다.