scale-up

스케일업(Scale-Up)은 기존 서버 한 대의 하드웨어 성능(CPU, RAM, 디스크 등)을 업그레이드하여 처리 능력을 높이는 수직 확장 방식입니다.

개념

[Scale-Up]
┌──────────────┐          ┌──────────────┐
│    서버 1     │          │    서버 1     │
│              │    →     │              │
│  CPU: 4코어  │          │  CPU: 32코어  │
│  RAM: 8GB    │          │  RAM: 128GB   │
│  Disk: 500GB │          │  Disk: 4TB    │
└──────────────┘          └──────────────┘
   처리량: 100 req/s         처리량: 800 req/s

서버 대수는 그대로 1대이고, 그 서버의 사양만 올리는 방식입니다.

Scale-Up이 적합한 경우

1. 데이터베이스 서버

DB는 데이터 정합성, 트랜잭션, 락 등의 이유로 여러 대로 분산하기가 복잡합니다.

[DB Scale-Out이 어려운 이유]
서버A DB: 잔액 10,000원 → 출금 5,000원
서버B DB: 잔액 10,000원 → 출금 5,000원  ← 동시 처리 시 정합성 깨짐

→ 그래서 DB는 우선 Scale-Up으로 성능을 확보하는 것이 일반적

2. 단일 스레드 기반 애플리케이션

Redis: 싱글 스레드 → 코어를 늘려도 활용 못함, 더 빠른 CPU가 효과적
게임 서버: 하나의 월드를 여러 서버로 분할하기 어려운 경우

3. 라이선스 비용이 서버 수에 비례하는 경우

상용 DB 라이선스: 서버 1대 = 1라이선스
→ Scale-Out으로 5대 = 5라이선스 (비용 5배)
→ Scale-Up으로 1대 고성능 = 1라이선스 (비용 절감)

Scale-Up의 장단점

항목장점단점
구현기존 아키텍처 변경 없이 단순 교체—
정합성단일 서버이므로 데이터 동기화 불필요—
비용—고성능 장비일수록 가격이 기하급수적 증가
한계—하드웨어 물리적 상한선 존재
장애—단일 장애점(SPOF), 서버 다운 시 전체 중단
다운타임—업그레이드 시 서버 중단 필요

비용 곡선

성능 ↑
     │                    ╱ Scale-Out (선형 증가)
     │                  ╱
     │                ╱
     │        ──────╱── Scale-Up (한계점)
     │      ╱
     │    ╱
     │  ╱
     │╱
     └──────────────────→ 비용

Scale-Up: 일정 수준까지는 효율적이나 한계점 이후 비용 대비 효율 급감
Scale-Out: 초기 구축 비용은 있지만 이후 선형적으로 확장 가능

실무에서의 선택 기준

상황권장 방식
트래픽이 예측 가능하고 적당한 수준Scale-Up
DB 성능 부족 (1차 대응)Scale-Up
트래픽 급증 가능성, 대규모 서비스Scale-Out
웹/API 서버 (무상태)Scale-Out
고가용성(HA)이 필수Scale-Out

실무에서는 둘 중 하나만 선택하는 것이 아니라, Scale-Up으로 기본 성능을 확보한 뒤 Scale-Out으로 확장하는 조합이 일반적입니다.

[일반적인 확장 전략]
1단계: DB Scale-Up (CPU, RAM 업그레이드)
2단계: Read Replica 추가 (읽기 분산)
3단계: 캐시 레이어 도입 (Redis)
4단계: 샤딩 (데이터 자체를 분산)

면접 포인트

CSLOG에서 보기