What is horizontal scaling
The ability for an application to automatically scale by adding/reducing computing nodes as the workload increases/decreases. Vertical scaling means that you scale by adding more power (CPU, RAM) to an existing machine. Today, horizontal scaling is almost always more desirable than vertical scaling because you don’t get caught in a resource deficit. Instead of taking your server offline while you’re scaling up to a better one, or hoping that your vendor has correctly implemented hot upgrades, horizontal scaling lets you keep your existing pool of computing resources online while adding more to what you already have. When your app is scaled horizontally, you have the benefit of elasticity.
Horizontal Scaling is also referred to as “scale-out”, usually requires a load-balancer program which is a middle-ware component in the standard 3 tier client-server architectural model. The Load-Balancer is responsible to distribute user requests (load) among the various back-end systems/machines/nodes in the cluster. Each of these back-end machines run a copy of your software and hence capable of servicing requests. It may also run a “health-check” where the load balancer uses the “ping-echo” protocol or exchanges heartbeat messages with all the servers to ensure they are up and running fine.
Benefits of horizontal scaling
- It can provide administrators with the ability to increase capacity on the fly
- In theory, horizontal scalability is only limited by how many entities can be connected successfully.
- Easily scalable tools
- Supporting linear amplifies the capacity
- Easier to run fault-tolerance
- Easy to upgrade
- Better use of smaller systems
- Cost of implementing is less expensive compared to scaling-up
- Improved resilience due to the presence of discrete, multiple systems
Disadvantages of horizontal scaling:
- Architectural design is highly complicated
- It’s important for the administrator to know whether the licensing costs for those additional servers
- High utility costs such (cooling and electricity)
- Bigger footprint and impact on the data center
- Extra networking equipment such as routers and switches are required