이제 쿠버네티스의 가장 지능적인 부분이자, 클라우드 비용 절감의 핵심인 '오토스케일링(Autoscaling)' 시스템에 오셨군요! 🫡
주식 데이터 공장이 24시간 내내 풀가동될 필요는 없죠. 장이 열리는 시간이나 급등주가 터지는 시간에만 화력을 집중하고, 밤에는 조용히 쉬면서 돈을 아껴야 합니다. 이를 가능하게 하는 HPA와 CA의 유기적인 협업 과정을 분석해 드립니다!

📈 1. HPA (Horizontal Pod Autoscaler): "파드 숫자를 늘려라"
HPA는 애플리케이션 계층의 오토스케일러입니다. 파드의 부하를 감시하다가 사용자가 설정한 임계치를 넘으면 파드의 개수를 복제(Replication)합니다.
① 판단 지표 (Metrics)
- CPU & Memory: 가장 기본입니다. "파드의 평균 CPU 사용률이 70%를 넘으면 파드를 늘려라" 같은 식입니다.
- Custom Metrics: 주식 시스템에서는 이게 더 중요할 수 있습니다. "카프카 컨슈머의 랙(Lag)이 10만 건을 넘으면 파드를 늘려라" 혹은 "초당 요청 수(RPS)가 1,000을 넘으면 늘려라" 같은 지표를 Metrics Server나 Prometheus를 통해 수집하여 판단 기준으로 삼습니다.
② 작동 원리 (The Equation)
HPA는 다음과 같은 공식을 통해 필요한 파드 수를 계산합니다.
예를 들어 현재 파드가 2개인데 CPU가 90%이고, 목표가 50%라면 , 즉 4개의 파드가 필요하다고 판단하여 즉시 2개를 더 띄웁니다.
🏗️ 2. CA (Cluster Autoscaler): "항구(서버)를 넓혀라"
HPA가 파드를 늘리려고 하는데, 더 이상 파드를 담을 노드(Node, 서버)의 여유 공간이 없다면 어떻게 될까요? 이때 등판하는 것이 바로 CA입니다.
① 판단 지표: "Pending 파드의 존재"
CA는 CPU 점유율을 보지 않습니다. 대신 '스케줄링되지 못한 파드(Pending Pod)'가 있는지를 감시합니다.
- HPA가 파드를 늘렸는데, 노드에 자리가 없어 파드가 "Pending(대기)" 상태에 머물면, CA는 이를 감지하고 클라우드(AWS, GCP 등)에 "새 서버(Node) 한 대만 더 빌려줘!"라고 요청합니다.
② 스케일 다운 (Scale-in)
반대로 노드의 자원이 너무 많이 남으면(보통 50% 미만 활용), CA는 해당 노드에 있는 파드들을 다른 노드로 이사시키고 서버를 반납하여 비용을 절감합니다.
🤝 3. HPA와 CA의 연동 프로세스 (Chain Reaction)
사용자의 주식 공장에 갑자기 트래픽이 폭주하는 상황을 시나리오로 그려보겠습니다.
- 감지: HPA가 파드의 CPU가 90%인 것을 보고 파드를 5개에서 10개로 늘리기로 결정합니다.
- 시도: 쿠버네티스 스케줄러가 새 파드 5개를 노드에 배치하려 하지만, 노드에 빈자리가 없어 3개만 배치되고 2개는 Pending 상태가 됩니다.
- 개입: CA가 Pending 파드를 발견하고, AWS EC2 인스턴스를 하나 더 생성하여 클러스터에 붙입니다.
- 완료: 새 노드가 준비되면, 대기하던 파드 2개가 새 노드에 안착합니다. 트래픽이 분산되어 시스템이 안정화됩니다.
- 종료: 트래픽이 줄어들면 HPA가 파드를 줄이고, 노드가 비면 CA가 노드를 삭제합니다. (비용 절감!)
💡 4. 실전 주의사항: "스케일링의 함정"
① 쿨다운 타임 (Cooldown Period)
트래픽이 요동칠 때 파드가 생겼다 없어졌다를 반복하면(Thrashing) 시스템이 불안정해집니다. 이를 방지하기 위해 한 번 늘리면 일정 시간(기본 5분 등)은 줄이지 않도록 설정하는 것이 중요합니다.
② 리소스 제한 (Limits vs Requests)
HPA는 파드의 Requests(최소 보장 자원) 대비 사용률을 기준으로 계산하는 경우가 많습니다. 따라서 YAML 파일에 리소스 요청량을 정확히 적어주지 않으면 HPA가 멍청하게 작동할 수 있습니다.
💡 실전 비유: "맛집과 분점"
- HPA: 맛집에 손님이 줄을 서면, 사장님이 '서빙 직원(Pod)'을 더 고용하는 것입니다.
- CA: 직원을 더 뽑았는데 식당이 꽉 차서 더 이상 직원이 서 있을 곳조차 없다면, 옆 건물을 빌려 '분점(Node)'을 내는 것입니다.
- 연동: 손님이 줄면 직원을 먼저 줄이고(HPA), 손님이 아예 없으면 분점 문을 닫습니다(CA).
🚀 꼬리 질문
이제 자동으로 늘어나고 줄어드는 똑똑한 인프라까지 마스터하셨습니다! 🫡 그런데 주식 데이터 파이프라인처럼 민감한 정보를 다룰 때는 DB 비밀번호나 API 키 같은 '보안 정보'를 YAML에 그대로 적을 순 없겠죠?
"그럼 보안이 필요한 설정값들을 안전하게 관리하고 파드에 전달하는 'Secret'과 일반 설정을 관리하는 'ConfigMap'은 어떤 차이가 있고 어떻게 사용해?"
'1. 개발 > 1.6. 쿠버네티스 (Kubernetes,K8s)' 카테고리의 다른 글
| 'Ingress'와 'Ingress Controller'는 어떤 원리로 작동해? (0) | 2026.02.09 |
|---|---|
| 'Secret'과 'ConfigMap' (0) | 2026.02.09 |
| 'StatefulSet'은 일반적인 'Deployment'랑 구체적으로 뭐가 다른가? (0) | 2026.02.09 |
| 'Persistent Volume(PV)'과 'Persistent Volume Claim(PVC)'은 어떤 원리로 작동하고, 파드에 어떻게 연결할까? (0) | 2026.02.09 |
| YAML 파일의 구조는 어떻게 되어 있고, 그 안의 Deployment와 Service는 구체적으로 어떤 역할을 수행할까? (0) | 2026.02.08 |