Open In App

Horizontal and Vertical Scaling | System Design

Last Updated : 07 Aug, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In system design, scaling is crucial for managing increased loads. Horizontal scaling and vertical scaling are two different approaches to scaling a system, both of which can be used to improve the performance and capacity of the system.

vertical_and_horizontal_scaling

Why do we need Scaling?

We need scaling to built a resilient system and better user experience.

  • Handle increased user load and traffic.
  • Ensure high availability and reliability.
  • Maintain performance and response time.
  • Support growing data and storage needs.

The following are two ways to do scaling.

Vertical Scaling

Vertical scaling, also known as scaling up, refers to the process of increasing the capacity or capabilities of an individual hardware or software component within a system.

  • We upgrade the same system rather than adding more systems. Add more power to your machine by adding better processors, increasing RAM, or other power-increasing adjustments.
  • Simple to implement and useful for monolithic and small scale applications.
vertical

Examples

  • Upgrading a MySQL server from 16 GB RAM to 64 GB to handle more queries.
  • Moving a website hosted on a 2-core VM to an 8-core, higher-RAM VM to improve performance.
  • E-commerce platform running on a single large AWS EC2 instance with increased resources (CPU, RAM, disk).

Advantages

  • Increased capacity: A server's performance and ability to manage incoming requests can both be enhanced by upgrading its hardware.
  • Easier management: Upgrading a single node is usually the focus of vertical scaling, which might be simpler than maintaining several nodes.

Disadvantages

  • Limited scalability: Vertical scaling is constrained by the hardware's physical limitations. Horizontal Scaling is not limited.
  • One server still receives all incoming requests thus increasing the possibility of downtime in the event of a server failure.
  • Scaling up often requires restarting or replacing the machine, causing downtime.

Horizontal Scaling

Horizontal scaling, also known as scaling out, refers to the process of increasing the capacity or performance of a system by adding more machines or servers to distribute the workload across a larger number of individual units.

  • There is no need to change the capacity of the server or replace the server.
  • There is no downtime while adding more servers to the network.

horizontal

Examples

  • A website like GeeksforGeeks adds more web servers behind a load balancer to handle traffic spikes.
  • Netflix scales different microservices independently — e.g., multiple instances of the streaming service across regions.
  • Amazon Auto Scaling spins up more EC2 instances during peak shopping hours (e.g., Black Friday).
  • Akamai or Cloudflare uses servers distributed globally to serve content closer to users.

Advantages

  • Increased capacity: More nodes or instances can handle a larger number of incoming requests.
  • Improved performance: By distributing the load over several nodes or instances, it is less likely that any one server will get overloaded.
  • Increased fault tolerance: Incoming requests can be sent to another node in the event of a node failure, lowering the possibility of downtime.

Disadvantages


  • Requires complex architecture (load balancers, distributed databases, etc.).
  • Difficult to maintain strong consistency across distributed nodes. Requires synchronization, messaging, or replication between nodes.
  • More machines = more networking, power, and maintenance.
  • Needs orchestration tools (e.g., Kubernetes, Ansible) to manage many servers.
  • Issues can be spread across nodes, making root-cause analysis tricky.
  • Communication between nodes adds latency and complexity.


Differences between Horizontal and Vertical Scaling

hvs-v

We have understood the meaning of both the major categories of scaling an application. We also have discussed some pros and cons of each one of them. Let’s do a quick comparison of these two approaches based on these pros and cons.

Aspect

Horizontal Scaling

Vertical Scaling

Resource AdditionAdds more machines or servers to distribute workloadEnhances resources of individual components
Cost EffectivenessGenerally more cost-effective for large-scale systemsInitially simpler, but can become costlier long-term
FlexibilityOffers greater flexibility as it's easier to add unitsLimited flexibility, especially with hardware
Fault ToleranceEnhances fault tolerance by distributing workloadLimited fault tolerance as it relies on a single unit
PerformancePerformance can improve as workload is distributedPerformance may improve, but can hit hardware limits
Single Point of FailureLess prone to single points of failurePotential single points of failure due to one unit
ComplexityCan introduce complexity in managing distributed systemSimpler to manage as it involves fewer components
ApplicabilityIdeal for handling massive scalability needsSuitable for moderate scalability requirements

Load Balancing

Requires load balancing
mechanisms to distribute
workload evenly across multiple units
Load balancing may be less critical as workload is managed by a single unit in most cases
Machine CommunicationHorizontal scaling relies heavily
on network communication to
coordinate tasks and share data between distributed machines
Vertical scaling primarily involves interprocess
communication within a single machine or between
closely coupled processes, minimizing the need for network communication

Which scaling option is right for an application?

There will be always some tradeoffs so it may be a little bit trickier for developers to decide which one is better for an application.

  • Firstly, you should identify your requirements, business goals, and areas where we would like to add value.
  • Then make important design decisions by questioning ourselves, developing prototypes, and refining the design.
  • Most of the time in big organizations engineers take some good qualities of vertical scaling and some good qualities of horizontal scaling.
  • They follow a hybrid approach of combining the speed and consistency of vertical scaling, with the resilience and infinite scalability of horizontal scaling. 

Horizontal and Vertical Scaling | System Design
Visit Course explore course icon
Article Tags :

Explore