As per the NIST guidelines, one of the five essential characteristics of cloud computing is Rapid Elasticity. As the name suggest rapid elasticity is something, growing its size rapidly. But technically we need to elaborate it in such a way that it should be used in the enhancement of the technology.
Technically Rapid elasticity is the ability of the cloud to scale its resources up and down as per the demand.It give a different dimension to the existing resource and allows the user to get additional space in the cloud or additional processing power to the customers.Using this technique provisioning resources to the user is get easy.
As the general belief of users about the cloud is it unlimited resources and maintaining this illusion is a somewhat different task. Cloud achieve this ability of rapid elasticity by scaling it resources up and down. Then we need to know about the scaling of the resources. So what is Scaling?
To Maintain the scaling in a cloud environment, we need a scalable architecture. And scalable architecture must have all the units independent so that they are loosely bound to each other and not affect the work of other units. The entire system is worked on the metadata and the process of provisioning is depend on the same metadata.
There are Three types of scaling:
Vertical Scaling/Scale Up:
Vertical scaling is just like tweaking your existing server and make it able to handle more traffic. Or optimise the existing resources to handle more demand. It just like adding more cache/memory or processor in the existing server to fulfill your customers demand.
E.g: You are running a web server and suddenly you come to know that your server goes down on some instances. So you find out the problem and install better server having extra thread handling capacity and it solves your problem. But after some period, you realise your existing server is not enough to serve to your growing customers and you boycott the same and install a new one which solves your problem.
Following the above scenario is Vertical Scaling.Adding more power to your existing resources is called vertical scaling.
Horizontal Scaling/Scale Out:
Horizontal scaling is just like adding more machine to your pool of hardware.It just like adding more server in your cluster. Employing parallel machine for accomplishing the target is Horizontal scaling.
E.g: we can understand the horizontal scaling by example. Suppose you are running a company having one application server and one database server but on peak hour, your servers go down. To tackle this problem you try for the virtual machine but this solves the problem partially. when both the traffic(application and database) hits together your plan of virtual machine fails. Now you purchase one brand new server and install an individual unit for a database server. Now you have two servers one to handle application traffic and one for the database. This arrangement solves the problem.
In above example, the provisioning of the resource is accomplished by manual process. Auto scaling process uses the same technique of Vertical and Horizontal scaling as per the demand and by analysing the traffic hit. Employing above two techniques as per the requirement automatically called as auto scaling.