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 various authors, some considering the notions of scalability and elasticity as identical, others as distinct. The advent of such distributed systems inevitably leads to technical problems that must be solved 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. Thus, a customer can rent a server for a short period of time and at the desired size. Many providers such as Amazon Web Services, Microsoft Azure or Google App Engine have created cloud servers on demand. But each cloud provider has its specificities in terms of speed, elasticity, latency, etc.
Difference Between Elasticity and Scalability
It is common to consider elasticity and scalability as synonyms. Elasticity in the cloud can be compared to the physical property of elasticity of a hardware, which is 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 the ability of a system 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 is able to adapt to demands by automatically provisioning and deprovisioning resources so that the resources provided are in line with the system’s demand.
Scalability is therefore a prerequisite for elasticity. Time is an important link between elasticity and scalability: the less time the system takes to adapt, the more elastic it is. The whole point of elasticity in the cloud is to respond as precisely as possible to the resource demand of an application. For this, the systems are able to adapt in a few minutes.
There are two approaches to elasticity. The first is called horizontal elasticity. This form of elasticity is achieved by adding or removing virtual machines to the client instance. The second approach, called vertical, is no longer done by adding servers, but by adding resources to the machine, such as RAM, CPU, etc.
Typically, horizontal elasticity has a higher time cost than vertical elasticity because you have to wait for the virtual machine to be created and booted. So for better performance, vertical elasticity will be used. The problem is that this type of approach is much more limited than horizontal scalability. This is because vertical scalability cannot extend to resources outside the physical machine. Thus, it is necessary to define on which machine the virtual machine will be started at the beginning, in order to be able to scale vertically as long as possible.
To increase virtual machine resources, when the virtual machine is no longer sufficient, new ones must be created on the same cloud (horizontal elasticity). If a single cloud cannot meet resource demands, virtual machines from other clouds must be added (horizontal elasticity). When the cloud no longer satisfies demands, move on to the next application.
The flexibility of cloud systems poses some challenges for providers. The first is that there are several basic configurations, it is usually quite difficult to know which one to choose. The goal is to have the best configuration while being the cheapest. Once this step is completed, the application will have more or less important requests over time.
One of the biggest challenges in the cloud is resolving errors in very large distributed systems. Being problems related to very large systems, it is impossible to solve them on smaller ones, so the tests are done directly on production environments. Using virtual machines can be a solution. Indeed, it is possible to capture valuable information on a VM, where it is impossible on physical machines. Unfortunately, all vendors have expanded their offering without using VMs, either because they started before the era of virtualization or because they thought they couldn’t afford it.
Another challenge is managing storage flexibility. Many attempts have been made to answer this question, varying in the richness of requests and storage APIs, the performance guarantees offered. The idea is not only to meet programmers’ expectations regarding durability, high availability and the ability to manage and query data, while keeping the benefits of cloud flexibility.
There are also challenges that link elasticity and cloud ecology. Indeed, it is important that applications hosted on the cloud free up as much unused resources as possible.
Software licenses are also an issue. Indeed, some software providers do not yet have offerings for the cloud, which implies astronomical software licensing costs. To address this problem, open source is a very popular solution.
Since elasticity allows you to dynamically acquire or free up IT resources in response to demand, it is important to have a monitoring and control. The data to be monitored is classified into three dimensions: cost, quality and resources. Another issue to consider is the boot time of virtual machines. Indeed, they must be available in time and ready to use for users.