Vadara: Predictive Elasticity for Cloud Applications Jo˜ ao Loff, Jo˜ ao Garcia INESC-ID Lisboa, Instituto Superior T´ ecnico - Universidade de Lisboa, Portugal joao.loff@tecnico.ulisboa.pt, joao.c.garcia@tecnico.ulisboa.pt Abstract—Elasticity is a key feature in cloud computing, and perhaps what distinguishes it from other computing paradigms. Despite the advantages of elasticity, realizing its full potential is hard due to multiple challenges stemming from the need to estimate workload demand. A desirable solution would require predicting system workload and allocating resources a priori, i.e., a predictive approach. Instead, what is mainly available are reactive solutions, requiring difficult parameter tuning. Since each Cloud Provider (CP) has its own implementation idiosyncrasies, it’s impossible for developers to: (i) learn only about one platform and re-use that knowledge in others; (ii) migrate developed elasticity solutions between different CPs; and (iii) to develop reusable predictive elasticity rules or algorithms. This paper makes three contributions to provide an effective elasticity environment. First, Vadara, a totally generic elasticity framework, that transparently connects and abstracts several CPs API behaviour, and enables the use of pluggable CP-agnostic elasticity strategies. Second, it presents a predictive workload forecasting approach, which ensembles several individual forecasting methods, and introduces a padding system based on the most recent prediction errors for both under- and over-provisioning. Finally, results show (1) Vadara’s successful connection to well-known CPs, (2) the improvements made regarding under- and over-provisioning due to our padding system, and (3) the effectiveness of our ensemble forecasting technique. Keywords-cloud computing; elasticity; demand forecasting; ensemble forecasting; cloud monitoring I. I NTRODUCTION One of the key goals of cloud computing is the elasticity of computational resources. Users expect CPs to provide any quantity of resources on short notice. In particular, it’s expected that the resources can be (1) provisioned when an application load increases (scale up) and (2) released when load decreases (scale down) [1]. A system’s ability to adapt to workload changes by allocating and deallocating resources, such that at each moment the available resources match the current demand as closely as possible, is called elasticity [2]. Despite the perceived advantages of elasticity, realizing its full potential is hard due to multiple challenges stemming from the need to precisely estimate resource usage in the face of significant variability in workload patterns. A desirable solution would require an ability to predict the incoming workload on the system and allocate resources a priori. This capability in turn will enable the application to be ready to handle the load increase when it actually occurs [3]. Instead, what current CPs offer are reactive-based solutions (e.g. [4]). In this type of system, a given threshold or rule has to be breached before the system reacts and changes [5], [6]. These solutions require expert and tedious human development and maintenance interventions. Fine tuning for the specific demand pattern is necessary for it to yield better results, which is often difficult to figure out [3], [7]. Current cloud computing APIs have not been the subject of active standardization [5]. Thus, customers can’t easily migrate their data and programs from one provider to another. This issue is known as CP lock-in, one of the key issues identified as holding back the expansion of cloud computing [1], [8]. The obvious solution is to standardize the APIs so that any cloud application user could deploy services and data across multiple CPs [5]. Moreover, users should be allowed, using the most common CP monitoring and scaling interfaces, to design customized elasticity algorithms that can be plugged into any existing CP without additional tinkering [9]. Vadara is a new, totally generic framework regarding the employed elasticity strategy; that bypasses CP elasticity lock-in, allowing the development of elasticity strategies that are not tied with any CP; that abstracts the CPs APIs and design specificities thereby decoupling elasticity from any underlying CP; that allows a cloud application to be deployed at multiple CPs at the same time; and that takes full-period and instance startup time issues into consideration. In addition to the framework, we also present results from deploying Vadara on several CPs using various elasticity strategies that forecast the future workload demand based on metrics retrieved from CPs monitoring APIs. This type of approach, called predictive, uses heuristics and analytical techniques to anticipate the system load, and based on these results, decides when and how to scale resources [5]. Our predictive approach uses a new padding technique for several individual forecasting methods, based on the most re- cent prediction errors for under- and over-provisioning. Those individual methods are then combined in a single forecasting technique, that uses a weighted k-Nearest Neighbors (kNN) algorithm. In short, this paper’s contributions are: • Proposing Vadara a totally generic framework regarding the employed elasticity strategy that allows the develop- ment of CP agnostic elasticity approaches. • Introducing a padding technique for demand forecasts that takes into account recent prediction errors and past occurrences of under- and over-provisioning, for a variety of individual forecasting methods. • Advancing a new ensemble forecasting algorithm, a k- Nearest Neighbors (kNN) algorithm weighted by recent forecast performance.