Elasticity (cloud computing)
In cloud computing, elasticity is defined as the degree to which a system is able to adapt to workload changes by provisioning and deprovisioning resources in an autonomic manner, such that at each point in time the available resources match the current demand as closely as possible. It is a defining characteristic, that differentiates it from previously proposed computing paradigms, such as grid computing. This dynamic variation in the use of computer resources to meet a varying workload is called "elastic computing".
Let us illustrate elasticity through a simple example of a service provider who wants to run a website on an IaaS cloud. At moment , the website is unpopular and a single machine (most commonly a virtual machine) is sufficient to serve all web users. At moment , the website suddenly becomes popular, for example, as a result of a flash crowd, and a single machine is no longer sufficient to serve all users. Based on the amount of web users simultaneously accessing the website and the resource requirements of the web server, it might be that ten machines are needed. An elastic system should immediately detect this condition and provision nine additional machines from the cloud, so as to serve all web users responsively.
At time , the website becomes unpopular again. The ten machines that are currently allocated to the website are mostly idle and a single machine would be sufficient to serve the few users who are accessing the website. An elastic system should immediately detect this condition and deprovision nine machines and release them to the cloud.
Elasticity aims at matching the amount of resources allocated to a service with the amount of resources it actually requires, avoiding over- or under-provisioning. Over-provisioning, i.e., allocating more resources than required, should be avoided as the service provider often has to pay for the resources that are allocated to the service. For example, at the time of this writing, Amazon EC2 charges $0.480/hour for an "extra large" virtual machine. If a service is allocated two virtual machines, instead of one required, the service provider wastes $4,205 every year. Hence, the service provider's expenses are higher than optimal and the profit is reduced.
Under-provisioning, i.e., allocating fewer resources than required, must be avoided, otherwise the service cannot serve its users with a good service. In the above example, under-provisioning the website may make it seem slow or unreachable. Web users eventually give up on accessing it, thus, the service provider loses customers. On the long term, the provider's income will decrease, which also reduces the profit.
One potential problem is that elasticity takes time. A cloud VM can be acquired at any time by the user, however, it may take up to several minutes for the acquired VM to be ready to use. The VM startup time is dependent on factors, such as image size, VM type, data center location, number of VMs, etc. Cloud providers have different VM startup performance.
- Herbst, Nikolas Roman; Samuel Kounev, Ralf Reussner (2012). "Elasticity in Cloud Computing: What It Is, and What It Is Not". Proceedings of the 10th International Conference on Autonomic Computing (ICAC 2013), San Jose, CA, June 24–28.
- Cloud Computing Principles and Paradigms, John Wiley and Sons, 2011, ISBN 978-0-470-88799-8
- Perez et al, Responsive Elastic Computing, ISBN 978-1-60558-578-9
- Mao, Ming; M. Humphrey (2012). "A Performance Study on the VM Startup Time in the Cloud". Proceedings of 2012 IEEE 5th International Conference on Cloud Computing (Cloud2012): 423. doi:10.1109/CLOUD.2012.103. ISBN 978-1-4673-2892-0.
- The NIST Definition of Cloud Computing. Peter Mell and Timothy Grance, NIST Special Publication 800-145 (September 2011). National Institute of Standards and Technology, U.S. Department of Commerce.
- Buyya, Rajkumar; et al (June 2009). "Cloud computing and emerging IT platforms: Vision, hype, and reality for delivering computing as the 5th utility". Future Generation Computer Systems 25 (6).