ARTT-HPA: Heterogeneity-Aware Autoscaling with Adaptive Resilient Thresholding and Traffic Allocation for Multi-Replica Microservices on Kubernetes (가제)
- On-going
- Co-Author
노드마다 처리 성능이 다르면 파드 수만 늘려도 느린 파드의 과부하는 남습니다. 이전 연구의 한계를 바탕으로 확장 시점과 요청 분배를 함께 조정했습니다.
- 역할
- 공동저자 · 이기종 환경의 오토스케일링 후속 연구
- 핵심 결과
- NASDAQ 실험에서 기본 HPA 대비 평균 P99 75.64% 감소. NASA-HTTP·NASDAQ 모두 비교군 중 타임아웃 최소. 제출 준비 중.
파드 수를 늘려도 느린 노드에는 요청이 몰렸습니다
ARTT-HPA는 LARE-HPA를 성능이 다른 노드가 섞인 환경으로 확장한 후속 연구입니다. 파드 수를 늘리는 것만으로는 노드 간 부하 차이를 해결하기 어려웠습니다. 노드 성능을 고려하지 않는 요청 분배와 전체 파드의 평균 CPU 사용률을 기준으로 한 확장이 함께 작용했기 때문입니다. 실험에서는 300 RPS 부근에서 느린 노드의 파드가 CPU 100%에 도달한 뒤에도 요청을 계속 받아 P99 지연이 급격히 증가했습니다.
LARE-HPA의 임계값 조정에도 보완이 필요했습니다. 요청이 완만하게 증가하면 변동성 신호가 작아져 대응이 늦었고, 계절성이 없는 NASDAQ 부하에서는 누적 SLO 만족률이 기본 HPA보다 낮았습니다. 부하가 증가하는 방향과 순간적인 변동을 따로 반영하고, 노드별 요청 분배도 함께 조정하기로 했습니다.
추세와 변동성을 분리했습니다
요청량의 추세와 변동성을 분리하고 각각에 가중치를 부여했습니다. 요청이 꾸준히 증가하는 경우와 짧게 급증하는 경우를 구분해 임계값에 반영하기 위해서입니다.
추세 추정에는 이상치의 영향을 크게 받는 OLS 대신 RANSAC 회귀를 적용했습니다. 이상치 판정 기준도 표준편차보다 극단값에 덜 민감한 중앙값 절대편차(MAD)를 사용했습니다. 회귀선의 기울기는 추세로, 관측값과 회귀선 사이의 평균 절대 잔차는 변동성으로 구분했습니다.
요청당 CPU 사용량으로 노드 차이를 반영했습니다
같은 요청을 처리해도 노드에 따라 CPU 사용량이 다릅니다. 변동성에 요청당 CPU 사용량을 곱해, 느린 노드에서 같은 요청을 처리하는 데 드는 부담까지 확장 기준에 반영했습니다.
매번 전체 이력을 다시 계산하지 않도록 Welford 온라인 알고리즘으로 평균과 분산을 갱신했습니다. 정규분포 분위수 기반 구간으로 이상치를 걸러 정규화 기준이 급격히 흔들리지 않게 했습니다. 변동성은 음수가 될 수 없으므로 하한은 0으로 두고 상한만 갱신했습니다.
다음 구간의 부하를 예측해 요청을 나눴습니다
요청 분배에서는 현재 활성 요청 수나 균등 비율만으로 파드별 처리 여력을 판단하기 어려웠습니다. 각 파드의 다음 구간 CPU 사용률을 Holt 이중지수평활로 예측하고, 예상 부하를 기준으로 요청 비율을 조정했습니다.
Holt의 평활 계수를 크게 잡으면 변화에 빠르게 반응하지만 잡음에도 민감해지고, 작게 잡으면 반응이 늦어집니다. Kalman filter로 예측과 관측의 불확실성에 따라 계수를 조정했습니다. 최근 예측 잔차의 EWMA로 측정 잡음도 갱신해, 과거 데이터가 쌓인 뒤에도 새로운 변화에 대응하도록 했습니다.
분배 비율의 급변과 새 파드의 초기 부하를 제어했습니다
부하 차이만큼 요청 비율을 바로 바꾸면 다음 구간에 반대쪽으로 부하가 쏠릴 수 있습니다. sigmoid로 한 번에 조정할 수 있는 범위를 제한해 비율이 반복해서 크게 흔들리는 것을 줄였습니다.
새 파드는 관측 이력이 없어 처음부터 부하를 예측하기 어렵습니다. 같은 컴포넌트에서 이력이 충분한 파드의 값을 초기값으로 사용하는 warm-start를 적용했습니다. 이력이 없다는 이유로 요청이 지나치게 적게 배정되는 것을 줄이고, 첫 구간부터 예측에 사용할 값을 확보했습니다. 전체 모듈은 애플리케이션 수정 없이 Kubernetes API와 연동하도록 구현했습니다.
실험과 결과
마스터 1대와 성능이 다른 워커 5대로 클러스터를 구성했습니다(Kubernetes 1.27.5·Istio 1.23.2·Prometheus 3.2.1). 크기가 다른 행렬곱을 순차 호출하는 마이크로서비스 5개를 배치하고, NASA-HTTP와 NASDAQ 부하에서 기본 HPA·LARE-HPA·Istio Least Request를 비교했습니다. SLO는 5초로 설정했습니다.
NASDAQ 워크로드에서 평균 P99는 기본 HPA 4,180.0ms, Least Request 3,864.0ms, LARE-HPA 4,476.2ms에서 ARTT-HPA 1,018.3ms로 줄었습니다. 각각 75.64%·73.65%·77.25% 감소한 결과입니다. 두 워크로드 모두 5초 타임아웃 요청 수가 비교군 중 가장 적었습니다.
NASA-HTTP에서는 평균 P99만 보면 Least Request가 1,139.8ms로 ARTT-HPA의 1,763.5ms보다 낮았습니다. 그러나 타임아웃은 각각 5,364,327건과 4,391,250건으로 ARTT-HPA가 적었습니다. 실패한 요청은 지연시간 계산에서 빠질 수 있어, 응답한 요청의 지연과 실패 요청 수를 함께 비교했습니다.
전체 워크로드의 컴포넌트 평균 CPU 활용률은 50.22%로, 기본 HPA 32.50%·Least Request 46.43%·LARE-HPA 36.80%보다 높았습니다. 지연시간과 타임아웃을 줄이면서 할당된 CPU도 더 활용한 결과입니다. 현재 국제 학회 제출을 준비 중이며 제목은 가제입니다.
| 부하 | 기법 | 평균 P99 (ms) | 타임아웃 (건) |
|---|---|---|---|
| NASA-HTTP | HPA | 3,854.0 | 33,196,096 |
| NASA-HTTP | Least Request | 1,139.8 | 5,364,327 |
| NASA-HTTP | LARE-HPA | 3,248.3 | 9,436,492 |
| NASA-HTTP | ARTT-HPA | 1,763.5 | 4,391,250 |
| NASDAQ | HPA | 4,180.0 | 1,989,924 |
| NASDAQ | Least Request | 3,864.0 | 865,657 |
| NASDAQ | LARE-HPA | 4,476.2 | 2,109,292 |
| NASDAQ | ARTT-HPA | 1,018.3 | 386,277 |