백엔드
급증하는 트래픽 안정적으로 처리하기: 개선편(1) 동적 스케일링
두줄요약
벌크액션 트래픽의 지연과 오실레이션 문제를 해결하기 위해 동적 스케일링을 개선했습니다. PWQD와 Time Decay를 결합해 Spike에도 안정적으로 대응했습니다.
문제 상황
- 대규모 벌크액션 트래픽에서 Worker 부족으로 Job Queue가 깊어지고 처리 지연이 누적되는 상황
- Rate Limit, Long Lived Job, Spike 트래픽이 겹치며 CPU/Mem만으로는 부하를 파악하기 어려운 상태
원인 분석
- Queue Depth, In-Flight 수, 실행 지연 시간, Throttle Rate만으로는 실제 Worker 부하와 선행 수요를 정확히 반영하기 어려움
- 초기 적재 구간의 일시적 Queue 급등과 스로틀링 변동이 잘못된 스케일 업 신호로 이어질 수 있음
해결 방법
- Queue Depth를 현재 Worker 수로 나눈 PWQD를 핵심 메트릭으로 선택
- PWQD가 연속으로 임계치를 넘을 때만 Scale Up하고, Scale Down은 Time Decay로 보수적으로 적용
- Exponential Scale Up과 선형적 감소 실험을 거쳐 Oscillation을 줄이는 방향으로 알고리즘 개선
적용해볼 점
- 절대 큐 길이보다 Worker 대비 상대 부하를 기준으로 스케일링 판단
- 순간 스파이크보다 지속적인 부하를 구분하는 조건 추가
- Scale Down을 보수적으로 설계해 과도한 진동 억제
