인스턴스를 늘리기 전 네 개의 게이트를 통과해야 한다
수평 확장은 병목을 없애기보다 다른 곳으로 옮길 수 있습니다. 상태, 헬스 체크, 연결 풀, 오토스케일 기준을 먼저 검증합니다.
1. Stateless
- 세션은 인스턴스 메모리에 두지 않습니다.
- 업로드 파일은 공유 가능한 저장소로 보냅니다.
- rate limit 카운터는 Redis 등으로 분리합니다.
2. Health
- 프로세스 생존과 요청 준비 상태를 분리합니다.
- DB, cache, queue 의존성 실패 시 새 요청을 차단합니다.
- 무거운 헬스 체크는 별도 주기로 제한합니다.
3. Pool
- 인스턴스 수 x DB pool 크기를 다시 계산합니다.
- 외부 API quota와 timeout을 확인합니다.
- 큐 소비자 중복 처리를 막습니다.
4. Autoscale
- CPU, RPS, latency, queue lag 중 병목을 설명하는 지표를 고릅니다.
- scale out/in 냉각 시간을 둡니다.
- 배포 직후 지표 급등을 따로 봅니다.
통과 기준: 인스턴스 하나를 내려도 요청, 세션, 작업 큐, DB 연결이 안전해야 한다.