모델 엔드포인트 확장과 자동 확장
모델 파드를 위한 Kubernetes HPA, 트래픽 기반 확장, A/B 배포, 카나리 릴리스를 다룹니다.
모델 엔드포인트 확장과 자동 확장은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
자동 확장을 사용하는 이유
추론 트래픽은 거의 일정하지 않습니다. 최대 부하에 맞춰 리소스를 준비하면 밤에 비용이 낭비되고, 평균 부하에 맞추면 최대 부하에서 요청을 처리하지 못합니다. 자동 확장은 수요에 따라 복제본 수를 자동으로 조정하므로 사용한 만큼만 비용을 지불하면서도 응답성을 유지할 수 있습니다.
파드와 복제본
쿠버네티스에서 모델 서버는 동일한 배포의 파드 여러 개(복제본)로 실행됩니다. 확장은 복제본 수를 변경하는 작업입니다. 서비스는 현재 존재하는 복제본 전체에 요청을 부하 분산합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: model-server
spec:
replicas: 2
template:
spec:
containers:
- name: server
image: my-model:latest수평 파드 자동 확장기
수평 파드 자동 확장기 (HPA)는 지표를 감시하고 해당 지표가 목표값에 가깝게 유지되도록 파드를 추가하거나 제거합니다. 대표적인 지표는 CPU 사용률입니다.
CPU 사용률을 기준으로 하는 HPA
targetCPUUtilizationPercentage는 HPA가 평균 CPU 사용률을 목표값 근처로 유지하도록 지정합니다. 파드의 평균 CPU 사용률이 80%이고 목표가 50%라면 HPA는 사용률이 다시 50%에 가까워질 때까지 확장합니다.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: model-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: model-server
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 50CPU 기반 확장의 한계
CPU가 일부 작업 부하를 제대로 나타내지 못하는 경우가 있습니다. GPU 모델은 CPU 사용률이 낮은 상태에서도 GPU에서 병목이 발생할 수 있고, 비동기 작업자는 CPU가 유휴 상태인데도 큐가 계속 늘어날 수 있습니다. 이런 경우에는 작업에 특화된 신호를 기준으로 확장해야 합니다.
이벤트 기반 확장을 위한 KEDA
KEDA(쿠버네티스 이벤트 기반 자동 확장)는 큐 길이, Kafka 지연, Prometheus 쿼리와 같은 외부 지표를 기준으로 확장합니다. 작업이 없을 때 0개까지 확장할 수도 있으며, HPA는 자체적으로 이 작업을 수행할 수 없습니다.
큐 기반 KEDA ScaledObject
이 KEDA ScaledObject는 메시지 큐가 커질 때 작업자를 추가합니다. queueLength 백로그의 각 단위가 복제본 하나를 추가하도록 트리거하므로 소비자가 급증한 작업량을 따라갈 수 있습니다.
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: inference-worker
spec:
scaleTargetRef:
name: inference-worker
minReplicaCount: 0
maxReplicaCount: 20
triggers:
- type: rabbitmq
metadata:
queueName: inference
queueLength: "10"인그레스를 사용한 부하 분산
외부 트래픽은 인그레스를 통해 파드에 도달합니다. nginx 인그레스 컨트롤러는 TLS 연결을 종료하고 복제본을 뒷받침하는 서비스 전체에 요청을 분산하므로, 확장하면 부하가 즉시 분산됩니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: model-ingress
spec:
ingressClassName: nginx
rules:
- host: api.example.com
http:
paths:
- path: /predict
pathType: Prefix
backend:
service:
name: model-server
port:
number: 8000안전한 출시: 카나리
새 모델 버전을 모든 트래픽에 한 번에 배포하는 것은 위험합니다. 카나리 출시는 트래픽의 일부를 새 버전으로 보내고 지표를 관찰한 다음 점차 더 많은 트래픽을 새 버전으로 전환합니다.
트래픽 가중치를 사용한 카나리
nginx 인그레스 카나리 주석은 요청의 일정 비율을 두 번째 배포로 라우팅합니다. 10%에서 시작해 오류율과 지연 시간을 확인한 다음 가중치를 100%로 높입니다.
metadata:
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "10"확장 기능 통합
견고한 구성은 다음 기능을 모두 결합합니다:
- HPA 또는 KEDA가 수요에 따라 복제본 수를 설정합니다
- 인그레스가 복제본 전체에 부하를 분산합니다
- 카나리 가중치가 새 버전을 안전하게 출시합니다
이 기능들을 함께 사용하면 탄력적이고 복원력이 높으며 위험이 낮은 모델 제공 환경을 구축할 수 있습니다.
간단한 확인
확장에 대한 지식을 확인해 보세요.
복습
모델 엔드포인트를 확장하는 방법을 배웠습니다:
- HPA는
targetCPUUtilizationPercentage를 사용해 CPU를 기준으로 확장합니다 - KEDA는 큐 길이를 기준으로 확장하며 0개까지 확장하는 기능을 지원합니다
- nginx 인그레스는 복제본 전체에 부하를 분산합니다
- 카나리 가중치는 안전한 출시를 위해 트래픽을 점진적으로 전환합니다
자주 묻는 질문
“모델 엔드포인트 확장과 자동 확장” 강의는 무료인가요?
네 — “모델 엔드포인트 확장과 자동 확장” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“모델 엔드포인트 확장과 자동 확장”에서 뭘 배우나요?
모델 파드를 위한 Kubernetes HPA, 트래픽 기반 확장, A/B 배포, 카나리 릴리스를 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“모델 엔드포인트 확장과 자동 확장” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.