DEV Community

Cover image for System Design: Scalability
Karan Pratap Singh
Karan Pratap Singh

Posted on • Originally published at

System Design: Scalability

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.


  • Simple to implement
  • Easier to manage
  • Data consistent


  • 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.


  • Increased redundancy
  • Better fault tolerance
  • Flexible and efficient
  • Easier to upgrade


  • Increases complexity
  • Data inconsistency
  • Increased load on downstream services

This article is part of my open source System Design Course available on Github.

Top comments (0)