Vertical vs Horizontal Scaling
단일 하드웨어의 자원을 늘리는 방식과 저사양 장비 여러 대를 엮는 방식의 물리적 차이와, 비용 및 운영 효율성을 고려한 확장 전략을 다루는 학습 노드입니다.
sys.entry
M
Me
hyunyoun's Blog
posts6 min read
1. Overview
수직 vs 수평 확장 물리(Vertical vs Horizontal Scaling, VHS)는 시스템에 몰리는 트래픽이라는 '압력'을 견디기 위해 하드웨어 기반을 어떻게 확장할 것인지 결정하는 엔지니어링의 경제학이자 물리학입니다.
학습자는 단일 서버의 CPU, RAM, Disk를 업그레이드하는 **수직 확장(Scale-up)**의 물리적 한계점(Ceiling)을 배웁니다. 특히, 여러 대의 보급형 서버를 네트워크로 묶어 무한한 용량을 확보하는 **수평 확장(Scale-out)**의 수리적 사상과, 이로 인해 발생하는 '분산 복잡도'의 비용을 익칩니다. 이를 통해 단순히 장비를 추가하는 것을 넘어, 서비스의 비즈니스 성장 곡선에 맞춘 최적의 하드웨어 투자 전략을 수립하는 역량을 확보합니다.
2. Scope & Boundaries
In-Scope
- Vertical Scaling Anatomy: 단일 노드의 리소스 증설과 하드웨어 버스(Bus) 대역폭의 상관관계
- Horizontal Scaling Mechanics: 무상태(Stateless) 아키텍처와 로드 밸런서 기반의 노드 추가
- Scaling Laws: 병렬 처리의 한계를 규명하는 암달의 법칙(Amdahl's Law) 수리 분석
- Cost-Efficiency Physics: 성능 향상 대비 하드웨어 구매 비용의 지수적 상승 구간 도출
Out-of-Scope
- 클라우드 벤더(AWS, Azure)의 인스턴스 구매 UI 상세 (인프라 조립 영역으로 위임)
- 로드 밸런싱의 세부 알고리즘 상세 (07-03-03 영역에서 분담)
Boundaries
- VHS vs. Load Balancing: 하드웨어 확장(VHS)이 '자원을 어떻게 늘릴 것인가'에 집중한다면, 로드 밸런싱은 '늘어난 자원에 어떻게 일을 시킬 것인가'에 집중하여 구분합니다.
3. Counterexample
- 단순히 "좋은 컴퓨터를 사면 된다"라 설명하는 것은 VHS 학습이 아닙니다. 왜 수직 확장이 특정 임계점을 넘는 순간 성능 향상 폭보다 하드웨어 가격이 기하급수적으로 비싸지는 '수확 체감의 법칙'을 수리적으로 증명할 수 있어야 하며, 수평 확장이 장비 대수를 2배 늘린다고 해서 처리량이 2배가 되지 않는 '네트워크 간섭 물리'를 논증하지 못한다면 VHS의 핵심을 이해하지 못한 것입니다.
4. Prerequisites
- Computer Organization & Hardware Physics (Basic): CPU/RAM/Bus 기본 이해가 필수입니다. (02-01-01 기초 역량)
- Parallel Computing Foundations (Recommended): 병렬 성질 이해가 권장됩니다. (03-02-01 PTM)
5. Learning Map
- Single Node limit: 한 대의 하드웨어가 낼 수 있는 물리적 최고 속도의 벽을 체감합니다.
- Buying Performance: 돈으로 시간을 사는(Scale-up) 시점과 그 한계 효용을 수리 계산합니다.
- The Power of Many: 평범한 돌멩이(저사양 서버)를 엮어 거대한 성벽(Scale-out)을 쌓는 법을 배웁니다.
- Architectural Paradox: 더 많은 서버가 더 많은 문제를 일으킬 때, 정합성과 성능 사이의 최적점을 완성합니다.
6. Learning Topics
Basic
Core: 수직 확장의 물리적 천장 (Scale-up Physics)
- Why to Learn: 가장 간단한 해결책이지만 왜 무한정 지속될 수 없는지 하드웨어적으로 알기 위해서입니다.
- What to Learn:
- Hardware Ceiling: CPU 소켓 수나 메인보드 뱅크의 물리적 한계
- Diminishing Returns: 성능 10% 향상을 위해 비용 100%를 지출하는 수리적 불합리
- Single Point of Failure: 가장 강력한 서버 한 대가 죽었을 때의 물리적 리스크
- How to Learn:
- 서버 사양(vCPU, RAM)을 2배로 늘렸을 때, 실제 처리량(TPS)이 2배가 되는지 벤치마킹하는 실습
- 하이엔드 서버 구매 비용 곡선을 그려보고 가성비 임계점 도출
- Implement: 현재 서버의 리소스 사용률을 모니터링하여 Scale-up이 필요한 시점을 알리는 기초
UsageAlert
Recommended
Core: 수평 확장과 무상태성 (Scale-out Essentials)
- Why to Learn: 현대 인터넷 서비스의 무한 확장을 가능케 하는 '저비용 고효율' 분산 원리를 알기 위함입니다.
- What to Learn:
- Stateless Architecture: 서버 내부에 데이터를 저장하지 않는 물리적 결벽
- Commoditization: 저렴한 범용 장비(Commodity Hardware) 사용의 수리적 이점
- Shared-nothing Design: 노드 간 간섭을 최소화하는 하드웨어 배치 물리학
- How to Learn:
- 로컬 파일에 세션을 저장하는 앱을 Scale-out 했을 때 왜 로그인이 풀리는지 물리적 원인 재현 실습
- 세션 저장소를 외부(Redis 등)로 떼어내고 서버를 늘려가며 성능 선형성(Linearity) 확인
- Implement: 서버 정보를 메모리가 아닌 외부 저장소에 공유하도록 수정한
StatelessApp구조
Practical
Core: 암달의 법칙과 병럴 효율 (Scalability Math)
- Why to Learn: 노드 수 증가에 따른 성능 향상 예측치를 수리적으로 계산하여 자원 낭비를 막기 위해서입니다.
- What to Learn:
- Amdahl's Law: 전체 작업 중 '병렬화 불가능한 부분'이 전체 성능을 결정짓는 물리 법칙
- Gustafson's Law: 데이터 크기가 커질 때의 확장성 수리 모델
- Coordination Overhead: 노드가 늘어날수록 소통(Ping)에 들어가는 하드웨어 리소스 낭비
- How to Learn:
- 병렬화 가능한 로직 90%, 불가능 로직 10%인 시스템에서 노드를 무한히 늘려도 성능이 10배를 못 넘음을 수리 증명 실습
- 분산 락(Distributed Lock)이 전체 시스템의 확장성(Scalability)을 어떻게 물리적으로 갉아먹는지 산출
- Implement: 특정 로직의 병렬 비율을 입력받아 확장 효율 곡선을 그려주는
ScalingPredictor
Advanced
Core: 오토스케일링 및 물리적 동역학 (Elasticity Dynamics)
- Why to Learn: 트래픽의 파도에 맞춰 하드웨어를 스스로 키우고 줄이는 기민한 인프라를 구축하기 위함입니다.
- What to Learn:
- Elasticity: 부하에 따라 즉시 자원을 증감하는 물리적 탄력성
- Scaling Policies: CPU, 응답 시간, 대기열 크기 기반의 수리적 판단 트리
- Cool-down Periods: 빈번한 하드웨어 수급(Thrashing)을 막기 위한 물리적 안정기
- How to Learn:
- 갑작스러운 트래픽 폭주 상황에서 오토스케일링이 장비를 준비하는 'Warm-up' 시간을 측정하는 실습
- 스케일 인(Scale-in) 시 실행 중인 유저 요청을 안전하게 처리하는 'Graceful Shutdown' 물리 보장
- Implement: 실시간 트래픽 패턴을 분석하여 다음 1시간의 필요 서버 대수를 예측하는 기초
AutoScalerRule
7. Terminology
8. References
Primary
- [P1] CS2023 - AR/Architecture (System performance and cost metrics) — Hardware context.
- [P1] CS2023 - PD/Parallel and Distributed Computing (Scalability) — Core requirements.
Secondary
- [Designing Data-Intensive Applications (DDIA)] Martin Kleppmann — Chapters on Scalability.
- [High Performance Web Sites] Steve Souders — Scaling principles.
Industry
- [AWS: Performance Efficiency Pillar - Well-Architected Framework] — Scaling guide.
- [Google Cloud: Patterns for Scalable and Resilient Apps] — Practical horizontal scaling.
9. Final Checklist
Primary
- '수직 확장'과 '수평 확장' 중 서비스 초기 아키텍처에서 어떤 방식이 물리적 구성 비용 면에서 유리한지 설명 가능한가? (P1)
- '암달의 법칙' 수식을 활용하여, 병렬화 불가능한 부분이 5%일 때 얻을 수 있는 최대 물리 가속률()을 수리 산출할 수 있는 가? (P1)
Secondary
- '무상태성(Statelessness)'이 왜 수평 확장의 물리적 전제 조건이 되는지 소통 가능한가?
- 규모의 경제(Economy of Scale) 관점에서 하이엔드 전용 하드웨어 도입과 범용 오픈 하드웨어 클러스터 구축의 비용 편익을 분석할 수 있는 가?
Industry
- 서비스 운영 중 CPU 사용률 기반의 '오토스케일링' 임계값을 설정할 때, 신규 노드 투입까지의 물리적 지연 시간()을 고려할 수 있는 가? (SFIA)
- 대규모 분산 시스템에서 '장비 고장률'이 수평 확장 규모에 따라 물리적으로 어떻게 누적되는지 예측하고 대처 방안을 제안할 수 있는 가?