실시간 지표(예: CPU 60%, RPS, 대기열 길이)가 임계치 초과 시 증설, 회복 시 축소.
AutoscalingSLO 기반비용 최적화
오토스케일링 패턴
부하에 따라 인프라를 자동 증감하여 성능(SLO)과 비용을 동시에 달성합니다. 반응형/예측형/스케줄형을 조합하고, 히스테리시스와 안정화 윈도우로 플래핑을 억제합니다.
예정 피크 시간대에 선제 증설(영업시간/이벤트), 야간 축소.
시계열 예측(주기/트렌드)로 목표 RPS/지연을 만족하도록 미리 확장.
지표를 목표값에 수렴하도록 지속 조정(예: p95<200ms).
권장 지표
| 지표 | 이유 | 권장 목표 | 비고 |
|---|---|---|---|
| RPS/큐 길이 | 수요를 직접 반영 | 백로그=0~소량 | 메시지 큐/KEDA와 궁합 |
| 지연 p95 | 사용자 체감 품질 | <200ms(예) | SLO 기반 증설 신호 |
| CPU/메모리 | 리소스 포화 방지 | CPU 50~70% | 과도한 메모리 사용 주의 |
| 에러율 | 장애 전조 | <1%(예) | 증설+롤백 트리거 연동 |
정책/안정화 옵션
| 옵션 | 설명 | 권장값/팁 |
|---|---|---|
| 최소/최대 복제본 | 바닥/천장 한도 | min>0(콜드스타트 회피), max는 DB/쿼터 고려 |
| 스텝/비율 증설 | 한 번에 N개 또는 비율 | 피크 대비 20~30% 버퍼 |
| 쿨다운/안정화 창 | 조정 간 최소 간격 | 증설 60s, 축소 5~10분(예) |
| 히스테리시스 | 상/하행 다른 임계 | 상향 70% / 하향 40%(예) |
| 웜업 요청 제한 | 새 포드에 완충 | 연결 드레이닝+서킷브레이커 |
| DB 커넥션 가드 | 연결 폭주 방지 | 풀/프록시(pgbouncer) 사용 |
* 비상 시 수동 오버라이드(수동 상향/배포 일시중지) Playbook 준비.
예시: HPA (CPU + 커스텀 지표)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: api-hpa
spec:
minReplicas: 3
maxReplicas: 30
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Percent
value: 50
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Percent
value: 20
periodSeconds: 60
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: api
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
- type: Pods
pods:
metric:
name: request_rate
target:
type: AverageValue
averageValue: "50" # pod당 RPS 타깃
예시: KEDA (큐 길이 기반)
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: worker-queue
spec:
scaleTargetRef:
name: worker
minReplicaCount: 2
maxReplicaCount: 50
cooldownPeriod: 300
triggers:
- type: rabbitmq
metadata:
protocol: amqp
queueName: jobs
hostFromEnv: RABBITMQ_CONN
queueLength: "200" # 포드당 200개 목표
예시: NGINX 웜업(신규 인스턴스 보호)
upstream api {
least_conn;
server 10.0.0.11:8080 max_fails=3 fail_timeout=10s;
server 10.0.0.12:8080 max_fails=3 fail_timeout=10s;
}
map $upstream_connect_time $is_warm { default 1; ~^0\..* 0; }
server {
listen 443 ssl http2;
location / {
proxy_set_header X-Warm $is_warm;
proxy_next_upstream error timeout http_502 http_503;
proxy_pass http://api;
}
}
서버리스/함수형
| 항목 | 내용 |
|---|---|
| 스케일-투-제로 | 무부하 시 0으로 축소, 이벤트 발생 시 수 ms~초 내 콜드스타트. |
| 프리워밍 | 지정 동시성 사전 확보(예: 최소 5) |
| 동시성 제한 | 다운스트림 보호(DB/서드파티 API) |
| 비용 | 호출/시간 과금, 저부하 워크로드 유리 |
웜풀/프리워밍 전략
이미지 최적화 — 레이어/패키지 슬림, 부팅 스크립트 캐시.
워크로드 프라임 — JIT 컴파일/모델 로드 사전 실행.
연결 풀 재사용 — DB/캐시 풀 사전 채움, 커넥션 프록시.
웜풀 — 준비 완료 인스턴스 N개 상시 대기.
트래픽 슬루/큐 — 급증 시 큐잉으로 평탄화.
배포 연계 — 카나리+오토스케일링 동기화.
관측/알림 & 런북
| 항목 | 설정 | 조치(런북) |
|---|---|---|
| 지연 p95 상승 | 임계 200ms, 3분 지속 시 경고 | 해당 서비스 minReplicas+2, DB 연결 확인 |
| 에러율 급증 | 5xx>2% 2분 | 롤백/해제 검토, 스케일업 임시 적용 |
| 큐 백로그 | backlog>10k | 워커 2배, 큐 파티셔닝 검토 |
| 비용 급증 | 일일 예산 80% | 상한선(최대 복제본) 임시 축소, 원인 분석 |
요금 안내
요금: 별도문의
대상 워크로드 수, 지표 파이프라인/알림, 예측형 분석 유무, 웜풀 용량, KEDA/서버리스 연동 범위에 따라 산정됩니다.
오토스케일링으로 성능과 비용을 동시에
SLO/지표만 알려주시면 최적의 정책/구성을 설계해드립니다.
오토스케일링 상담
ℹ️
개인정보 처리 안내
문의 응대를 위해서만 사용되며 일정 기간 후 파기됩니다.