Scalability is the property of a system to handle a growing amount of load by adding resources to the system. For example search engine must support increasing numbers of users, and the number of topics it indexes.
Scaling can be achieved by either upgrading current system configuration or by adding extra hardware. Vertical scaling and Horizontal scaling are two different ways to accomplish scaling.
It is done by increasing the capacity of existing hardware or software by adding resources. This can mean more memory (RAM), faster storage (such as Solid State Drives), or more powerful processors. It is limited by the fact that you can only get as big as the size of the server.
Vertical Scaling is also called the Scale-Up approach.
It is done by adding more instances of hardware or software entities to existing pool of hardware. They work as a single logical unit and load can be equally distributed. Horizontal scaling do not change the capacity of the individual server.
Horizontal Scaling is also called the Scale-Out approach.
- Horizontal scaling is accomplished by adding more machines into existing pool of resources. Vertical scaling is accomplished by adding more power (CPU, RAM) to an existing machine.
- With horizontal scaling it is often easier to scale dynamically by adding more machines into the existing pool. Vertical scaling is often limited to the capacity of a single machine.
- Horizontal scaling has improved resilience due to the presence of discrete, multiple systems in compare to Vertical Scaling.
- Vertical Scaling costs are lesser than horizontal scaling.