Scalability is the measure of how well a system responds to changes by adding or removing resources to meet demands.
Let's discuss different types of scaling:
Vertical scaling
Vertical scaling (also known as scaling up) expands a system's scalability by adding more power to an existing machine. In other words, vertical scaling refers to improving an application's capability via increasing hardware capacity.
Advantages
- Simple to implement
- Easier to manage
- Data consistent
Disadvantages
- Risk of high downtime
- Harder to upgrade
- Can be a single point of failure
Horizontal scaling
Horizontal scaling (also known as scaling out) expands a system's scale by adding more machines. It improves the performance of the server by adding more instances to the existing pool of servers, allowing the load to be distributed more evenly.
Advantages
- Increased redundancy
- Better fault tolerance
- Flexible and efficient
- Easier to upgrade
Disadvantages
- Increases complexity
- Data inconsistency
- Increased load on downstream services
This article is part of my open source System Design Course available on Github.
karanpratapsingh / system-design
Learn how to design systems at scale and prepare for system design interviews
System Design
Hey, welcome to the course. I hope this course provides a great learning experience.
This course is also available on my website and as an ebook on leanpub. Please leave a ⭐ as motivation if this was helpful!
Table of contents
-
Getting Started
-
Chapter I
-
Chapter II
-
Chapter III
- N-tier architecture
- Message Brokers
- Message Queues
- Publish-Subscribe
- Enterprise Service Bus (ESB)
- Monoliths and Microservices
- Event-Driven Architecture (EDA)
- Event Sourcing
- Command and Query Responsibility Segregation (CQRS)
- API Gateway
- REST, GraphQL, gRPC
- Long polling, WebSockets, Server-Sent Events (SSE)
-
Chapter IV
- …
Top comments (0)