DEV Community 👩‍💻👨‍💻

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

Posted on • Originally published at github.com

System Design: Scalability

Scalability is the measure of how well a system responds to changes by adding or removing resources to meet demands.

scalability

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.

Top comments (0)

Advice For Junior Developers

Advice from a career of 15+ years for new and beginner developers just getting started on their journey.