Background
As demands on an organization's already existing infrastructure increase. The most probable step they might take is to improve the performance of already existing infrastructure or add to it (scaling).
Load scaling
This refers to the process of improving performance by increasing the number of servers or improving the resources in an already existing server. They are of two types:
- Horizontal scaling
This refers to scaling by adding more servers to the pool.
- Vertical scaling
This refers to scaling by improving the resources in an already existing server.
There is a hybrid of both known as diagonal scaling.
Advantage of horizontal scaling
It is cheaper. A single powerful server could cost as much as ten times the price of two servers.
Uptime and reliability. With horizontal scaling, when one server fails, the other could take on the work without the site going down unlike vertical scaling where the failure of one server could utterly disrupt services
Concerns are separated. Horizontal scaling allows for the separation of the database server, application servers, etc. which allow for individual maintenance and catering for each service.
It allows for duplication of systems amongst geographical areas to reduce latency.
Limitation of horizontal scaling
It requires the application to be developed in a way that would support, distribution of workloads across the pool of servers.
Advantages of vertical scaling
No external interaction required and so facilitates a faster and more efficient intercommunication between apps and services.
It eliminates worries about data consistency as every resource exist in a single machine
Disadvantages of vertical scaling
- If the server or infrastructure expriences any failure or needs maintenaince at any point in down, services would be down for that period.
2.There is a limit to how much resources can be added to a single server.
There are three ways to scale:
- Scheduled scaling: This refers to scaling at a specified period of time. One can choose to scale out to 10 instances from 12 pm to 1 pm, then scale back to 2 instances from 12 am to 1 am.
- Manual scaling: This requires the attention and initiative of an engineer to scale out and down in accordance with the demand.
- Automatic scaling: This refers to scaling done by issuing instructions to the computers on how to scale to prevent performance problems.
Four general areas for scalability in systems
Disk I/O
Memory
Network I/O
CPU
Benefits of scaling in cloud computing
Companies can increase their storage according to their needs without incurring extra costs for physical infrastructure.
Companies can scale up computing power to accommodate temporary spikes in traffic or building capacity for permanent increases in work
The ability to scale out and in according to company needs eliminates the risk associated with rapid growth. Thus, a bad year in the company would leave the company in debt as a result of fixed server costs.
Cloud Autoscaling
This is the method of scaling used in cloud computing that expands and reduces computational resources dynamically according to needs.
In different Iaas providers, the feature is called various names:
- Amazon web services - Auto scaling groups
- Google cloud - Instance groups.
- Microsoft azure - virtual machine scale sets.