급증하는 트래픽 안정적으로 처리하기: 개선편(1) 동적 스케일링
백엔드
급증하는 트래픽 안정적으로 처리하기: 개선편(1) 동적 스케일링
두줄요약
벌크액션 트래픽에 대응하기 위해 PWQD를 핵심 메트릭으로 삼아 동적 스케일링을 설계했습니다. 연속 초과 시 확대하고 Time Decay로 축소해 Spike에도 안정적으로 대응했습니다.
문제 상황
- 벌크액션 트래픽에서 Long Lived Job과 Spike 요청이 겹치며 Worker Exhaustion과 꼬리 지연 발생
- 기존 CPU/Mem 기반 Horizontal Scaling만으로는 실제 부하를 충분히 반영하기 어려운 한계
원인 분석
- Queue Depth, In-Flight 수, Execution Latency, Throttle Rate만으로는 각각 초기 탐색 구간, 스로틀링, 선행성 부족 등의 문제가 존재
- 단일 큐 구조에서 작업이 몰리면 현재 Worker 수 대비 상대적 부하를 직관적으로 읽기 어려움
해결 방법
- Queue Depth를 현재 Worker 수로 나눈 Per-Worker Queue Depth(PWQD)를 핵심 메트릭으로 선정
- PWQD 연속 초과 시 Exponential Scale Up, Scale Down은 Time Decay로 보수적으로 적용
- Spike에는 민감하게 반응하되 초기 등록 구간의 과잉 스케일링과 Oscillation을 완화
성능/운영 포인트
- 10만 건 기준 Worker 8개에서 16개로 늘려 처리 시간을 약 25분에서 14분으로 단축
- 자동 스케일링으로 수동 개입 감소, TPS 준수와 안정성 향상
- 다만 단일 Job Queue로 인한 HOL Blocking은 별도 과제로 남음
