Elasticity in cloud computing is the ability of this cloud to adapt to application needs as quickly as possible. There are several definitions according to the authors, some considering the concepts of scalability and elasticity as identical, others as distinct. The arrival of such distributed systems (see Distributed Calculation) inevitably leads to technical problems that need to be addressed or limited. At the economic level, the arrival of elasticity has had an impact on customers and cloud providers. For example, suppliers have created a pay-as-you-go payment system to pay for resources used on demand. For example, a client can rent a server over a short period and at the desired size. Many vendors such as Amazon Web Services, Amazon Elastic Compute Cloud, Microsoft Azure and Google App Engine have created on-demand cloud servers. But each cloud provider has its specificities in terms of speed, elasticity, latency, etc.
Notions of Elasticity in Cloud Computing
It is common to consider elasticity and scalability as synonyms. The elasticity in the cloud can be compared to the physical property of the elasticity of a material, which corresponds to its ability to return to its original shape after a deformation it has undergone. Thus elasticity can be calculated as the ratio between the pressure that the cloud can undergo on the pressure it undergoes.
Scalability is a system’s ability to meet resource needs, without taking into account the speed, time, frequency or granularity of its actions. Elasticity is the degree to which a system can adapt to demands by supplying and unsuppliing resources automatically, so that the resources provided are in line with the demand of the system. The whole point of elasticity in the cloud is to respond as precisely as possible to the demand for resources of an application. For this, systems can adapt in a matter of minutes.
There are two approaches to elasticity. The first is called horizontal elasticity. This form of elasticity is done by adding or removing virtual machines to the customer’s instance. The second approach called vertical, is done no longer by adding servers, but by adding resources to the machine, such as RAM, CPU,etc.
In general, horizontal elasticity has a higher time cost than vertical elasticity because you have to wait for the virtual machine to be created and booted. Thus for better performance, vertical elasticity will be used. The problem is that this type of approach is much more limited than horizontal scalability. Indeed, vertical scalability cannot extend over resources outside the physical machine. Thus, it is necessary to define on which machine the virtual machine will be started at the beginning, to be able to scale vertically for as long as possible.
There are various algorithms which combines the almost infinite scalability of horizontal elasticity, and the rapidity of vertical elasticity: To increase virtual machine resources, when the virtual machine is no longer enough, new ones must be created on the same cloud (horizontal elasticity). If a single cloud cannot meet resource demands, virtual machines from other clouds (horizontal elasticity) must be added. When the cloud no longer meets demands, you have to move on to the next application.
A cluster of servers is loaded with each use. There are two types of load models among vendors: IaaS a load based on the remaining allotted time, whether the instance is fully used or not; in PaaS, the load based on the user application’s excess CPU consumption per day. Server clusters are also elastic in the sense that a user can dynamically increase or reduce the number of instances used.
To assess the elasticity of the clusters, these tests were carried out :
- Similar to traditional Benchmarking for architectures, it measures the time used to perform benchmark tasks.
- Benchmark tasks perform stress test on all machine resources(CPU,memory and disk)
- Cost to complete each Benchmark task
- Scaling” latency is the time elapsed between the client’s request for the resource and the allocation of a new instance. The latency of “scaling” can affect the performance and cost of deploying an application. For testing, cluster performance is compared (benchmark, cost per benchmark and scaling latency)