Scaling is the term everyone must have heard of if you are working in the IT industry. So what exactly is scaling, we are not going to discuss scaling in-depth instead we will see the very basics of scaling and the two extremes of scalability.
What is scalability?
Scalability is the property of the system and its ability to increase or decrease as your application’s demand increase or decreases.
Now, what are the type of scaling that are present. There are two types of scaling
Scaling the resources by increasing the number of machines in the system is known as Horizontal Scaling. As your applications demand increases you can meet the demand by adding more and more resources. One very important point to note there is for horizontal scaling you need to make your applications stateless. You can read about why the stateless property is needed in applications that are horizontally scalable.
Vertical scaling is simply increasing the resources in the same machine which is running. You can increase the CPU, memory, and disks. The restriction with this is there is a limit to which you can scale your systems vertically. You don’t need to think about anything extra when your application is running on only one system. This is not used in modern-day infrastructures.
Now let’s talk about are the two extremes. Any guess?
So the two extremes are supercomputers and cloud computing.
These are the extreme of what a system can be scaled vertically, these computers are the ones that have the most resources to utilize. Writing an application for super computers in verticle scaling mode is easy as you don’t have to think about network partitioning and clock sync etc.
The issue in these are there is no high availability to insure if this goes down, the system will be up.
This is the extreme of how you can scale horizontally. They provide huge resources in different geographical location for scaling. This has many advantages. Your user can get the data faster as he will be served from closest location. High availability is there, even if there is a damage to particular geolocation.
Now what are the complications. The main complications is writing a program that can deal with network glitches and keeping the clock syncronozation in mind. When you write for such system you have to keep track of the failure and retry to fix them. Or any other reconcilation method. There is loads of other issues that can come with these systems.
We will talk about them in later articles. If you like the article please share and subcribe.