Elasticity (computing)
In computing, elasticity is defined as "the degree to which a system is able to adapt to workload changes by provisioning and de-provisioning resources in an autonomic manner, such that at each point in time the available resources match the current demand as closely as possible".[1][2] Elasticity is a defining characteristic that differentiates cloud computing from previously proposed distributed computing paradigms, such as grid computing. The dynamic adaptation of capacity, e.g., by altering the use of computing resources, to meet a varying workload is called "elastic computing".[3][4]
In the world of distributed systems, there are several definitions according to the authors; some consider the concepts of scalability a sub-part of elasticity, others as being distinct.
Purpose
[edit]Elasticity aims to match 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 it may incur extra costs (monetary, energy, operational, etc.) for unused or underutilized resources. For example, if a website is over-provisioned with two cloud computing resources to handle current demand that only requires one resource, the costs of maintaining the second resource would effectively be wasted.
Under-provisioning, i.e., allocating fewer resources than required, must be avoided; otherwise, the service cannot serve its users with a good service. For example, under-provisioning a website may make it seem slow or unreachable, because not enough resources have been allocated to meet current demand.
Example
[edit]Elasticity can be illustrated through an example of a service provider who wants to run a website on the cloud. At moment , the website is unpopular and a single machine is sufficient to serve all users. At moment , the website suddenly becomes popular, and a single machine is no longer sufficient to serve all users. Based on the number of web users simultaneously accessing the website and the resource requirements of the web server, ten machines are needed. An elastic system should immediately detect this condition and provision nine additional machines from the cloud to serve all users responsively.
At time , the website becomes unpopular again. The ten machines 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, releasing them to the cloud.
Problems
[edit]Resource provisioning time
[edit]Resource provisioning takes time. A cloud virtual machine (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.[5] Cloud providers have different VM startup performance. This implies that any control mechanism designed for elastic applications must consider the time needed for the resource provisioning actions to take effect.[6]
Monitoring elastic applications
[edit]Elastic applications can allocate and deallocate resources on demand for specific application components. This makes cloud resources volatile, and traditional monitoring tools which associate monitoring data with a particular resource, such as Ganglia or Nagios, are no longer suitable for monitoring the behavior of elastic applications. For example, during its lifetime, a data storage tier of an elastic application might add and remove data storage VMs due to cost and performance requirements, varying the number of used VMs. Thus, additional information is needed in monitoring elastic applications, such as associating the logical application structure over the underlying virtual infrastructure.[7] This in turn generates other problems, such as data aggregation from multiple VMs towards extracting the behavior of the application component running on top of those VMs, as different metrics may need to be aggregated differently (e.g., CPU usage could be averaged, network transfer might be summed up).
Stakeholder requirements
[edit]When deploying applications in cloud infrastructures (IaaS/PaaS), stakeholder requirements need to be considered in order to ensure that elastic behavior meets stakeholder needs. Traditionally, the optimal trade-off between cost and quality or performance is considered; however, for real world cloud users, requirements regarding elastic behavior are more complex and target multiple dimensions of elasticity (e.g., SYBL[8]).
Multiple levels of control
[edit]Cloud applications vary in type and complexity, with multiple levels of artifacts deployed in layers. Controlling such structures must take into consideration a variety of issues. For multi-level control, control systems need to consider the impact lower level control has upon higher level ones, and vice versa (e.g., controlling virtual machines, web containers, or web services in the same time), as well as conflicts that may appear between various control strategies from various levels.[9] Elastic strategies on in cloud computing can take advantage of control-theoretic methods (e.g., predictive control has been experimented in cloud computing scenarios by showing considerable advantages with respect to reactive methods).[10] One approach to multi-level elastic clouc control is rSYBL.[11]
See also
[edit]References
[edit]- ^ Herbst, Nikolas; Samuel Kounev; Ralf Reussner (2013). "Elasticity in Cloud Computing: What It Is, and What It Is Not" (PDF). Proceedings of the 10th International Conference on Autonomic Computing (ICAC 2013), San Jose, CA, June 24–28. Archived from the original (PDF) on 2018-01-07. Retrieved 2013-07-10.
- ^ Nikolas Herbst, Rouven Krebs, Giorgos Oikonomou, George Kousiouris, Athanasia Evangelinou, Alexandru Iosup, and Samuel Kounev. Ready for Rain? A View from SPEC Research on the Future of Cloud Metrics. Technical Report SPEC-RG-2016-01, SPEC Research Group - Cloud Working Group, Standard Performance Evaluation Corporation (SPEC), 2016. [1]
- ^ Cloud Computing Principles and Paradigms, John Wiley and Sons, 2011, ISBN 978-0-470-88799-8
- ^ Perez; et al. (15 June 2009), Responsive Elastic Computing, Association for Computing Machinery, ISBN 978-1-60558-578-9
- ^ Mao, Ming; M. Humphrey (2012). "A Performance Study on the VM Startup Time in the Cloud". 2012 IEEE Fifth International Conference on Cloud Computing. p. 423. doi:10.1109/CLOUD.2012.103. ISBN 978-1-4673-2892-0. S2CID 1285357.
- ^ Gambi, Alessio; Daniel Moldovan; Georgiana Copil; Hong-Linh Truong; Schahram Dustdar (2013). "On estimating actuation delays in elastic computing systems". 2013 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS). pp. 33–42. CiteSeerX 10.1.1.353.691. doi:10.1109/SEAMS.2013.6595490. ISBN 978-1-4673-4401-2. S2CID 13269185.
- ^ Moldovan, Daniel; Georgiana Copil; Hong-Linh Truong; Schahram Dustdar (2013). "MELA: Monitoring and Analyzing Elasticity of Cloud Services". 2013 IEEE 5th International Conference on Cloud Computing Technology and Science. Vol. 1. pp. 80–87. doi:10.1109/CloudCom.2013.18. ISBN 978-0-7695-5095-4. S2CID 8362285.
- ^ Copil, Georgiana; Moldovan, Daniel; Truong, Hong-Linh; Dustdar, Schahram (2013). "SYBL: An Extensible Language for Controlling Elasticity in Cloud Applications". 2013 13th IEEE/ACM International Symposium on Cluster, Cloud, and Grid Computing. pp. 112–119. doi:10.1109/CCGrid.2013.42. ISBN 978-1-4673-6465-2.
- ^ Kranas, Pavlos (2012). "ElaaS: An Innovative Elasticity as a Service Framework for Dynamic Management across the Cloud Stack Layers". 2012 Sixth International Conference on Complex, Intelligent, and Software Intensive Systems. pp. 1042–1049. doi:10.1109/CISIS.2012.117. ISBN 978-1-4673-1233-2. S2CID 18233634.
- ^ Mencagli, Gabriele; Vanneschi, Marco (6 February 2014). "Towards a systematic approach to the dynamic adaptation of structured parallel computations using model predictive control". Cluster Computing. 17 (4): 1443–1463. doi:10.1007/s10586-014-0346-3. S2CID 254374635.
- ^ Copil, Georgiana; Moldovan, Daniel; Truong, Hong-Linh; Dustdar, Schahram (2013). "Multi-level Elasticity Control of Cloud Services". Service-Oriented Computing. Lecture Notes in Computer Science. Vol. 6470. pp. 429–436. doi:10.1007/978-3-642-45005-1_31. ISBN 978-3-642-17357-8.
External links
[edit]- 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.