콘텐츠로 이동

수직 확장 vs 수평 확장

서비스 트래픽이 늘어날 때 “서버를 더 크게 만들 것인가, 서버를 더 많이 만들 것인가”는 기본적인 인프라 의사결정이다. 웹 서비스라면 수평 확장이 거의 항상 정답이지만, GPU 기반 ML 추론 서비스는 그 공식이 조금 다르다.

단일 서버의 자원을 늘린다. CPU 코어, RAM, GPU를 더 강력한 것으로 교체하거나 추가한다.

Before: After (Scale Up):
┌────────────┐ ┌────────────────────┐
│ 4 vCPU │ → │ 16 vCPU │
│ 16 GB RAM │ │ 64 GB RAM │
│ 1x A100 │ │ 4x A100 (NVLink) │
└────────────┘ └────────────────────┘

장점:

  • 코드 변경 없음. 단일 프로세스가 더 많은 자원을 쓰면 됨
  • 낮은 지연(네트워크 없이 GPU 간 NVLink로 통신)
  • 상태 공유 단순(동일 프로세스 내 메모리)

단점:

  • 하드웨어 한계가 명확함(단일 서버에 GPU를 무한정 추가 불가)
  • 비용이 비선형으로 증가(4xA100이 1xA100의 4배 비용이 아님, 더 비쌈)
  • 단일 장애점(SPOF)

동일한 사양의 서버를 여러 대로 늘린다. 로드밸런서가 트래픽을 분산한다.

Before: After (Scale Out):
┌────────────┐
│ 1x A100 │ 인스턴스 A
┌────────────┐ ├────────────┤
│ 1x A100 │ → │ 1x A100 │ 인스턴스 B
└────────────┘ ├────────────┤
│ 1x A100 │ 인스턴스 C
└────────────┘
로드밸런서

장점:

  • 이론상 무한 확장 가능
  • 인스턴스 장애 시 다른 인스턴스가 처리 지속
  • 클라우드에서 자동 스케일링(Auto Scaling) 적용 가능

단점:

  • 애플리케이션이 Stateless해야 함 (04-03에서 상세 설명)
  • 네트워크 오버헤드 추가
  • 모델 가중치를 각 인스턴스에 로드해야 함 (콜드 스타트 문제)

ML 추론에서 수직 확장을 먼저 고려하는 이유

섹션 제목: “ML 추론에서 수직 확장을 먼저 고려하는 이유”

일반 웹 서비스와 달리 ML 추론은 수직 확장을 먼저 검토해야 하는 특수한 상황이 있다.

대형 LLM은 단일 GPU에 올라가지 않을 수 있다.

모델 크기별 최소 GPU 요구사항 (FP16 기준, 개략적):
모델 파라미터 VRAM 필요량 최소 GPU 구성
─────────────────────────────────────────────────────
Llama 3.2 3B 3B ~6 GB 1x RTX 3080
Llama 3.1 8B 8B ~16 GB 1x A100 40GB
Llama 3.1 70B 70B ~140 GB 4x A100 80GB
Llama 3.1 405B 405B ~810 GB 8x H100 80GB

70B 모델을 서빙하려면 수평 확장 전에 멀티 GPU(수직 확장)가 필수다.

GPU는 병렬 연산에 특화되어 있다. 단일 GPU에 요청을 모아서 처리(배칭)하면 처리량이 크게 늘어난다.

배치 크기별 A100 GPU 처리량 (개략적):
배치 크기 1: ~50 tokens/sec
배치 크기 8: ~300 tokens/sec (6배)
배치 크기 32: ~800 tokens/sec (16배)
→ 단일 GPU를 충분히 활용한 뒤 수평 확장

현실적인 ML 추론 스케일링 전략

섹션 제목: “현실적인 ML 추론 스케일링 전략”
Phase 1: 수직 확장 (초기)
단일 GPU → 멀티 GPU (텐서 병렬/파이프라인 병렬)
배치 크기 최적화 (vLLM continuous batching)
양자화로 메모리 효율 개선 (FP16 → INT8 → INT4)
Phase 2: 수평 확장 (트래픽 성장)
GPU 노드 복제 + 로드밸런서
Auto Scaling (GPU 사용률 기준)
Spot/Preemptible 인스턴스 혼합
Phase 3: 하이브리드
작은 모델: CPU 인스턴스 수평 확장 (저비용)
큰 모델: GPU 클러스터 수직+수평 혼합
캐싱 레이어: KV Cache 공유로 중복 연산 제거
시나리오: 초당 100개 요청 처리
수직 확장:
8x H100 서버 1대: ~$30/hr
장점: 관리 단순, NVLink 고속 통신
단점: 장애 시 전체 중단
수평 확장:
A100 서버 4대: ~$12/hr × 4 = $48/hr
장점: 고가용성, 점진적 확장
단점: 관리 복잡, 콜드 스타트
→ ML 추론은 초기엔 단일 대형 GPU 서버가 비용 효율적일 수 있음
→ 트래픽이 예측 불가능하면 수평 확장으로 Auto Scaling 활용
  • 수직 확장은 단일 서버 자원 증가, 수평 확장은 서버 대수 증가다
  • 일반 웹 서비스는 Stateless 설계로 수평 확장이 기본 전략이다
  • ML 추론은 모델 크기(VRAM 제약)와 배치 효율 때문에 수직 확장을 먼저 고려한다
  • vLLM의 continuous batching으로 단일 GPU 활용률을 최대화한 뒤 수평 확장한다
  • 실제 운영에서는 수직 확장(멀티 GPU)과 수평 확장(인스턴스 복제)을 단계적으로 조합한다