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단계: 샤딩 (데이터 자체를 분산)
면접 포인트
- Scale-Up은 단순하지만 물리적 한계와 SPOF 문제가 있어 장기적 해결책이 되기 어렵습니다.
- DB는 정합성 문제로 Scale-Out이 까다로워 우선 Scale-Up → 한계 시 Read Replica → 최후 수단으로 샤딩 순서로 확장합니다.
- "Scale-Up vs Scale-Out 중 무엇이 좋은가?"라는 질문에는 상황에 따라 다르며 보통 조합해서 사용한다고 답하는 것이 좋습니다.