In this article, we will go over the differences between horizontal and vertical scaling. We will also touch on the upside and downsides to these different types of scaling, as well as how they are achieved.
Horizontal Scaling (Scale-Out)
Horizontal scaling means that you scale by adding more machines into your pool of resources whereas Vertical scaling means that you scale by adding more power (CPU, RAM) to an existing machine.
Horizontal scaling is also referred to as scale-out and typically requires a load-balancer to distribute load (or requests) among the servers within the cluster. Horizontal scaling is also used to describe adding additional virtual machines (VM) to a cluster to allow a virtualization program to allocate resources for that VM.
Vertical Scaling (Scale-Up)
Vertical scaling also referred to as scale-up, is usually achieved by adding additional resources to current servers in order to help increase the capacity of the current machine. This allows for more load within the server.
Vertical scaling is typically handled via the systems administrators via software, whereas horizontal scaling is done by techs within the data center. Vertical scaling also comes with its own set of challenges as not all software is capable of scaling. If alternatives are not available, the only option left may be to physically scale the server.
Virtualization software such as Virtuozzo, VMware, Oracle VM VirtualBox, and many others, allow for you to partition physical resources on to multiple VMs. These are required for being able to scale vertically.
Typically it is more cost-effective to scale up, or vertically, rather than scaling out, or horizontally. This is due to the cost of hardware and the fact that most virtualization software that is used to scale vertically allows for an increase in resources without having to physically add a new machine.