Elasticity Controller for Cloud-Based Key-Value Stores Ala Arman, Ahmad Al-Shishtawy, and Vladimir Vlassov KTH Royal Institute of Technology, Stockholm, Sweden {aarman, ahmadas, vladv}@kth.se Abstract—Clouds provide an illusion of an infinite amount of resources and enable elastic services and applications that are capable to scale up and down (grow and shrink by requesting and releasing resources) in response to changes in its environment, workload, and Quality of Service (QoS) requirements. Elasticity allows to achieve required QoS at a minimal cost in a Cloud environment with its pay-as-you-go pricing model. In this paper, we present our experience in designing a feedback elastically controller for a key-value store. The goal of our research is to investigate the feasibility of the control theoretic approach to the automation of elasticity of Cloud-based key-value stores. We describe design steps necessary to build a feedback controller for a real system, namely Voldemort, which we use as a case study in this work. The design steps include defining touchpoints (sensors and actuators), system identifica- tion, and controller design. We have designed, developed, and implemented a prototype of the feedback elasticity controller for Voldemort. Our initial evaluation results show the feasibility of using feedback control to automate elasticity of distributed key- value stores. Keywords-Cloud Computing; Elasticity; Feedback Control; Key-Value Store; Voldemort. I. I NTRODUCTION Cloud computing is leveraged by various IT companies and organizations. A Cloud is an infrastructure that provides resources, information and services as a utility over the In- ternet [1]. In recent years, Cloud storage, such as Amazon S3, has become rather popular and widely used in many different application domains, including Web 2.0 and mobile applications. There are several features defined for Cloud computing such as scalability and elasticity that can be leveraged when developing Cloud-based applications. There are two main ad- vantages of Cloud computing over other large scale computing alternatives. The first one is that the end-user does not need to be involved in the configuration and maintenance of the Cloud. A developer does not have to buy servers, security solutions, etc, and set them up; rather, the developer builds applications on Cloud resources [2] of a Cloud provider. The second advan- tage and probably the most important one, is that the end-user only pays for resources the developer requests and uses. That is why the Cloud computing approach is less expensive than its alternatives. However, this property, called “pay-as-you-go” has an important drawback. If allocated resources exceed the required amount, it will incur a waste of money. On the other hand, if the obtained resources are not adequate, the system might not meet the Service Level Objectives (SLOs), resulting in a negative impact on its performance and, as a consequence, negative impact on user experience with the system. Considering these issues, the concept of elasticity comes to the attention of many Cloud users. There is a difference between elasticity and scalability. In the context of this work, scalability means the expansion capacity of the system, which is expected to be reached in the future. This approach has a very important drawback, which is that the ultimate size of the system should be specified in advance. There is a contradiction between this concept and the “pay-as-you-go” property of Cloud computing, because in this approach the end-user should pay for the ultimate size of the system which might never be fully utilized. Another disadvantage is, as scaling up means adding more physical resources; it might be not easy to scale down by removing them. To deal with these problems, a new approach, called Elastic- ity, has become favorite in recent years. In this approach, the final size of the system is not predefined. But an elastic system is capable of scaling up and down (growing and shrinking by requesting and releasing resources) at runtime in response to changes in its environment, workload, and Quality of Service (QoS) requirements. In the case of increasing the load, a new instance is added to meet SLOs; whereas, if the load decreases, a number of instances are removed from the system in order to reduce the cost. In order to effectively and efficiently utilize the elasticity property of the system, the elasticity control should be automated. In this paper, we present our experience in designing an elasticity controller for a key-value store. The goal of our research is to investigate the feasibility of a control theoretic approach to automation of elasticity of a Cloud-based storage by performing all design steps necessary to build a feedback controller for a real system, namely Voldemort [3], [4], used as a case study. The design steps include defining touchpoints (sensors and actuators), system identification, and controller design. We have designed and developed a prototype of the feedback elasticity controller for Voldemort. There has been several related works in the area of the automation of elasticity Cloud-based storage services such as [5]–[7]. For example, in [5], the SLO is specified as a requirement on the average response time. The system variable monitored and used in feedback control is the CPU utilization, because, as shown by the authors, the CPU utilization (which 2012 IEEE 18th International Conference on Parallel and Distributed Systems 1521-9097/12 $26.00 © 2012 IEEE DOI 10.1109/ICPADS.2012.45 268 2012 IEEE 18th International Conference on Parallel and Distributed Systems 1521-9097/12 $26.00 © 2012 IEEE DOI 10.1109/ICPADS.2012.45 268 2012 IEEE 18th International Conference on Parallel and Distributed Systems 1521-9097/12 $26.00 © 2012 IEEE DOI 10.1109/ICPADS.2012.45 268