| GaonIT Cloud — 호스팅 & 클라우드
가온IT

오토스케일링 패턴

개발자가 사랑하는 호스팅 & 클라우드. 지금 바로 시작하세요.

AutoscalingSLO 기반비용 최적화

오토스케일링 패턴

부하에 따라 인프라를 자동 증감하여 성능(SLO)비용을 동시에 달성합니다. 반응형/예측형/스케줄형을 조합하고, 히스테리시스와 안정화 윈도우로 플래핑을 억제합니다.

⚡ 반응형(피드백)
실시간 지표(예: CPU 60%, RPS, 대기열 길이)가 임계치 초과 시 증설, 회복 시 축소.
📅 스케줄형
예정 피크 시간대에 선제 증설(영업시간/이벤트), 야간 축소.
🔮 예측형
시계열 예측(주기/트렌드)로 목표 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/지표만 알려주시면 최적의 정책/구성을 설계해드립니다.