Autopilot 개요
Autopilot은 실시간 워크로드 수요에 맞춰 Pod 레플리카 수를 동적으로 조정하는 Wave Autoscale의 지능형 수평 Pod 오토스케일링 솔루션입니다. 기존 Horizontal Pod Autoscaler(HPA)와 달리, Autopilot은 머신러닝으로 개별 워크로드의 패턴을 학습하고 스케일링 이벤트에 반응합니다.
Autopilot이란?
Autopilot은 실시간 메트릭과 워크로드 패턴을 기반으로 Pod 레플리카 수를 자동으로 관리하는 ML 기반 수평 스케일링 시스템입니다. 수동 HPA 설정 대신, 애플리케이션 고유의 동작에 맞춰 적응하는 자율 스케일링 결정을 내립니다.
Autopilot 동작 방식
Autopilot은 각 워크로드를 지속적으로 평가하고, 실시간 메트릭과 머신러닝을 결합해 스마트한 스케일링 결정을 내립니다.
- 메트릭 수집: 현재 CPU, 메모리, 네트워크, 요청 데이터를 수집하고 최신 상태와 정확성을 확인합니다
- 안전 점검: 쿨다운 기간이 끝날 때까지 대기하고, 스케일링이 빠르게 오락가락하지 않도록 설정을 검증합니다
- 분석 및 산출: 메트릭이 임계값을 초과했는지 확인하는 동시에, ML 서비스가 과거 패턴, 현재 메트릭, 최적화 모드(Performance 또는 Cost)를 기반으로 최적의 레플리카 수를 산출합니다
- 결정: 규칙 기반 로직과 ML 산출 결과를 결합하고, 안전을 위한 폴백 계산을 함께 사용합니다
- 스케일링: Kubernetes 클러스터의 Pod 수를 조정합니다
Autopilot과 기존 HPA 비교
| Feature | Traditional HPA | Autopilot |
|---|---|---|
| 반응 시간 | 30초~5분 | 10초 이내 |
| 설정 방식 | 서비스별 수동 임계값 튜닝 | 워크로드 동작 기반 학습 |
| 메트릭 | 기본 CPU/메모리 | Network, Requests, PSI |
| 스케일링 방식 | 현재 부하에 반응 | 워크로드 성능 모델 기반 |
| 적응성 | 고정 임계값 | 지속적 학습 |
| 과잉/과소 프로비저닝 | 보수적인 마진으로 인해 자주 발생 | 패턴 학습으로 최소화 |
핵심 기능
1. 전략 기반 최적화
Autopilot은 두 가지 최적화 전략을 제공합니다.
Performance: 최대 응답성을 위한 보수적인 스케일링
- 충분한 용량을 확보하기 위해 레플리카 계산값을 올림 처리합니다
- CPU/메모리 목표 임계값이 더 높습니다(CPU 90%, 메모리 95%)
- 비용보다 가용성을 우선합니다
Cost: 리소스 효율을 위한 균형 잡힌 스케일링
- 레플리카 계산값을 일반적인 방식으로 반올림합니다
- CPU/메모리 목표 임계값이 더 낮습니다(CPU 70%, 메모리 85%)
- 성능과 비용 절감의 균형을 맞춥니다
2. ML 기반 스케일링 (Autopilot ML 모델)
워크로드 부하와 성능 간의 관계를 학습하는 Autopilot ML 모델을 사용합니다.
- 학습(Training): 과거 메트릭(기본값: 14일)을 분석해 워크로드별 모델을 구축합니다
- 산출(Prediction): 다음을 기반으로 최적의 레플리카 수를 산출합니다:
- 현재 부하(네트워크 트래픽 또는 요청 수)
- 성능 메트릭(CPU 사용률, 메모리 사용률, 지연 시간)
- 전략에서 정의한 목표 성능 임계값
- 리소스 요청량(CPU 코어, 메모리)
- 폴백(Fallback): ML 모델을 사용할 수 없을 때 HPA 방식의 사용률 기반 스케일링으로 대체합니다
3. 포캐스팅 기반 스케일링
시계열 포캐스팅을 활용해 트래픽이 몰리기 전에 미리 대응합니다.
- Forecast Horizon: 설정 가능한 시간(분 단위)만큼 앞을 내다보고 향후 부하 수준을 계산합니다
- Load Forecasting: 통계 모델을 사용해 부하 메트릭을 포캐스팅합니다
- Early Scaling: 지연 시간 급증을 막기 위해 트래픽이 도달하기 전에 미리 스케일 업합니다
4. Timing Controls
스케일링 동작을 세밀하게 제어합니다.
- Cooldown Period: 연속적인 스케일링 동작이 빠르게 반복되는 것을 방지합니다(워크로드별로 기본값 설정 가능)
- Stabilization Window: scale-down 전에 flapping을 방지하기 위한 추가 지연 시간입니다
- Ignore Initial Metrics: 워크로드 시작 단계의 메트릭을 건너뜁니다
- Gradual Scaling: 단계적 scale-in 보호를 구현합니다. 스케일링 동작 이후, 설정된 기간 동안 빠른 scale-in을 방지합니다.
5. Core Configuration
워크로드별로 세부적인 설정을 제공합니다.
Application Type Profiles:
- CPU Intensive: CPU 바운드 워크로드에 최적화합니다
- Memory Intensive: 메모리 바운드 워크로드에 최적화합니다
Load Tracking:
- Network In: 수신 네트워크 트래픽을 기준으로 스케일링합니다
- Requests: 요청 수를 기준으로 스케일링합니다
- Custom PromQL: 커스텀 Prometheus 쿼리를 기준으로 스케일링합니다
Threshold Configuration:
- CPU 사용률 임계값
- 메모리 사용률 임계값
- 요청 수 임계값
Resource Boundaries:
- Min replicas(하한)
- Max replicas(상한)
- 폴백 CPU 사용률 목표치
- 폴백 메모리 사용률 목표치
Performance Objectives:
- 지연 시간 목표치(선택)
- 포캐스팅 기반 스케일링을 위한 forecast horizon
6. Autopilot Scheduler
시간 기반으로 설정을 관리합니다.
Schedule Types:
- Period: 요일을 선택하는 반복 스케줄(일~토)
- Once: 일회성 스케줄 실행
Features:
- Multiple Configurations: 시간대별로 다른 Autopilot 설정을 적용합니다(예: 업무 시간에는 공격적인 스케일링, 야간에는 보수적인 스케일링)
- Config Swapping: 스케줄에 따라 서로 다른 전략/임계값 조합을 자동으로 전환합니다
7. 동작 모드
두 가지 플래그로 Autopilot의 동작 방식을 제어합니다.
- Monitoring: 활성화하면 Autopilot이 전체 파이프라인을 실행합니다
- Autopilot Enabled: 시뮬레이션 모드와 함께 활성화하면 스케일링 결정을 실제로 적용합니다
| Monitoring | Autopilot Enabled | Behavior |
|---|---|---|
| ✅ true | ✅ true | Full Autopilot - 스케일링 값을 산출하고 적용합니다 |
| ✅ true | ❌ false | Monitoring Only - 스케일링 값을 산출하지만 적용하지는 않습니다 |
| ❌ false | (any) | Disabled - 아무 작업도 하지 않습니다 |
이를 통해 전체 Autopilot을 활성화하기 전에 안전하게 테스트(모니터링 모드)할 수 있습니다.
다른 Wave 기능과의 연동
Autopilot은 다음 기능과 매끄럽게 연동됩니다.
- Smart Sizing: 수직 최적화가 수평 스케일링을 보완합니다
- Autopilot Scheduler: 예정된 스케일링 이벤트를 위한 시간 기반 정책
더 알아보기
- Getting Started with Autopilot - 단계별 설정 가이드
- Cost vs Performance Optimization - 올바른 최적화 모드를 선택하는 방법
- Predictive Scaling - 과거 패턴 활용하기
- Timing Controls - 스케일링 동작 세밀하게 조정하기
- Core Configuration - 고급 설정 옵션
- Autopilot Scheduler - 시간 기반 스케일링 관리