Horizontal vs. Vertical Scaling
Systems design a procedure by which we define the architecture of a system to satisfy given requirements.
It is a technique by which the required amounts of scalability, reliability, performance and consistency are satisfied in real world systems.
Why system design is required
The first concept in designing a system is scalability. We discuss the two main approaches to solve this problem: Horizontal scaling and vertical scaling.
Horizontal scaling
Horizontal scaling is adding more machines to deal with increasing requirements. These machines handle requests in parallel to improve user experience.
Vertical scaling
Vertical scaling is replacing the current machines with more advanced machines to improve throughput and hence response time. The techniques are used in conjunction in real world systems.
Comparison
Buy bigger machines | Buy more machines |
---|---|
Load balancing required | N/A |
Resilient | Single point of failure |
Network calls(RPC) | Inter process communication |
Data inconsistency | Consistent |
Scales well | Hardware limit |
References
'System Design' 카테고리의 다른 글
MSA(마이크로서비스 아키텍처)의 장점 (0) | 2020.09.04 |
---|---|
메시지 큐는 언제 사용할까? (1) | 2020.09.04 |
확장 시스템에 대한 기본 가이드 (0) | 2020.09.04 |