I will try to explain this briefly and hopefully this will help somebody someday.
Scaling is the ability of a system or network to grow and handle more amount of work. This work could be any kind of processing from a single user or from multiple users.
Why do you want to Scale?
A system over the period of time might want to processed request many request from multiple users. Which would be difficult if the system has limited resources like memory, processing power or storage capacity. So to handle such large requests or traffic the infrastructure should be upgraded to handle larger traffic flow. In system where the resources are limited, the user may experience delay or their request may never get processed or it may timeout after a certain period of time
How do you Scale?
Typically a system can grow in two ways, you can grow in size/ capability or you can grow in numbers. This is the basic different between horizontal scaling and vertical scaling. Horizontal scaling mean growing in numbers and vertical scaling refers to scaling in capability.
Let’s discuss what Horizontal and Vertical Scaling is in more detail, for the sake of understanding I’m going to explain the concept using a real world example.
Let’s imagine a large building with 100 floors and we are creating an elevator system to take people to different floors. We first design two elevators to handle small traffic. This is all working fine if number of people coming to the building is very less, when the traffic increases we want to scale the facility to serve the larger traffic.
If we try to scale this vertically, we would have to replace/ upgrade the existing elevator to a faster or express elevator that travels faster. But the downside to this the elevators have a maximum speed after which it cannot go faster.
If we try to scale horizontally, we would install more elevators in the building and this would server many requests.
You scale in numbers or number of individual systems that can serve requests. For example: Let’s imagine that you have a server with 1GB RAM, 40GB HDD and 2.0 GHZ processor. You add another system with similar specification to handle more traffic.
You scale vertically by increasing the processing power of the system, if the system is 1 GB RAM, 40 GB HDD and a 2 GHZ processor. You scale vertically by increasing the systems processing power like increasing the RAM, Hard Disk or processor capacity.