갑자기 트래픽이 몰리면? HPA를 이용한 자동 스케일링
CPU 사용량이나 트래픽에 맞춰 자동으로 파드 개수를 늘리고 줄이는 수평적 파드 오토스케일링(HPA)을 익힙니다.
TV 프로그램에 소개되거나 유명 인플루언서가 우리 서비스를 언급하는 순간, 트래픽은 평소의 수십 배로 폭증합니다. 서버가 버티지 못하고 뻗어버리는 끔찍한 사태를 막으려면 재빠르게 서버를 증설해야 합니다. 쿠버네티스의 HPA(Horizontal Pod Autoscaler)는 이 과정을 전면 자동화해줍니다.
트래픽 폭증과 수동 스케일링의 한계
서버의 처리 능력을 늘리는 스케일링(Scaling)에는 크게 두 가지 방법이 있습니다. 서버 컴퓨터 자체의 성능(CPU, RAM)을 업그레이드하는 것을 스케일 업(Scale Up), 서버 컴퓨터의 대수(파드의 개수)를 늘리는 것을 스케일 아웃(Scale Out)이라고 합니다.
쿠버네티스와 같은 컨테이너 환경에서는 주로 파드를 늘리는 스케일 아웃 방식을 사용합니다.
사람이 직접 대응할 수 없는 속도
이벤트 시작 시간이나 광고 송출 직후, 트래픽은 단 1분 만에 수직 상승합니다. 과거에는 개발자가 모니터링 알람을 받고 부랴부랴 터미널을 열어 파드 개수를 수정했습니다. 하지만 사람이 개입하는 속도는 언제나 한발 늦습니다. 알람을 확인하는 사이에 서버는 이미 과부하로 쓰러져버릴 확률이 높습니다.
스케일링의 종류
Scale Up
의미
서버 성능 자체를 높임 (램/CPU 추가)
Scale Out
의미
동일한 서버를 여러 대 복제하여 늘림
Scale Out
쿠버네티스 방식
파드(Pod)의 개수를 늘림
HPA: 똑똑한 자동 스케일링 로봇
이런 문제를 해결하기 위해 쿠버네티스에는 HPA(Horizontal Pod Autoscaler, 수평적 파드 오토스케일러)라는 기능이 있습니다. 이름이 길고 복잡하지만 역할은 명확합니다. 미리 정해둔 기준에 따라 파드의 개수를 자동으로 조절하는 로봇이라고 생각하면 됩니다.
HPA는 어떻게 작동할까?
HPA는 주기적으로 파드들의 CPU 사용량이나 메모리 사용량을 검사합니다.
예를 들어, "CPU 사용량이 70%를 넘으면 파드를 늘려라"라고 설정해두었다고 가정해보겠습니다. 트래픽이 몰려 CPU 평균 사용량이 80%로 치솟으면, HPA는 즉시 디플로이먼트에게 "지금 파드 3개로는 부족하니 5개로 늘려!"라고 명령을 내립니다. 트래픽이 줄어들어 CPU 사용량이 30%로 떨어지면 다시 파드를 원래대로 3개로 줄입니다.
HPA를 사용하기 위한 필수 조건
- 각 파드마다 CPU와 메모리의 '요구량(Request)'이 설정되어 있어야 합니다.
- 메트릭 서버(Metrics Server)라는 모니터링 도구가 클러스터에 설치되어 있어야 합니다.
- 최소 파드 개수와 최대 파드 개수의 한계치가 지정되어야 무한정 서버가 늘어나는 것을 막을 수 있습니다.
오토스케일링이 가져다주는 마음의 평화
바이브코딩 시대에서 인프라 관리에 쏟는 시간을 최소화하는 것은 무엇보다 중요합니다. HPA가 적용된 클러스터는 개발자가 잠든 새벽에 글로벌 트래픽이 몰려와도 스스로 파드를 복제해 대응합니다.
HPA 설정(YAML) 엿보기
HPA가 파드의 개수를 어떻게 조절하는지 설정하는 `hpa.yaml` 파일의 예시입니다.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70최소 2개의 파드를 유지하되, CPU 사용량이 70%를 넘으면 최대 10개까지 자동으로 파드를 늘리겠다는 직관적인 선언입니다.
클라우드 환경에서 서버 한 대 한 대는 모두 비용입니다. HPA는 트래픽이 적은 밤에는 최소한의 파드만 남겨두어 인프라 비용을 극적으로 절감하고, 트래픽이 몰릴 때만 자원을 사용하여 경제성과 안정성이라는 두 마리 토끼를 모두 잡습니다.
개념 퀴즈
퀴즈 답을 맞춰야 학습 완료가 됩니다.HPA(Horizontal Pod Autoscaler)의 주된 역할은 무엇인가요?
3줄 요약
- 1예측하기 힘든 트래픽 폭증에 대응하기 위해 파드의 개수를 늘리는 스케일 아웃이 필요합니다.
- 2HPA는 CPU나 메모리 사용량을 모니터링하여 자동으로 파드 개수를 늘리거나 줄입니다.
- 3HPA를 통해 서비스의 안정성을 높이고 남는 서버 자원을 줄여 인프라 비용을 절약할 수 있습니다.