You are presented with multiple paper abstracts, alongside the associated literature review and chapter titles. Given the provided information, you are going to do a literature review. Please generate a coherent literature review that synthesizes the content, draws connections between different works, highlights major findings, and identifies any gaps in the existing research.

Literature Review Title: Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey 
Chapter Title:  Heterogeneity. 
1. Abstract of Cited Paper (BIB001):  In this paper we present a simple and effective approach for resource provisioning to achieve a percentile bound on the end to end response time of a multi-tier application. We, at first, model the multi-tier application as an open tandem network of M/G/1-PS queues and develop a method that produces a near optimal application configuration, i.e, number of servers at each tier, to meet the percentile bound in a homogeneous server environment -- using a single type of server. We then extend our solution to a K-server case and our technique demonstrates a good accuracy, independent of the variability of service-times. Our approach demonstrates a provisioning error of no more than 3% compared to a 140% worst case provisioning error obtained by techniques based on an M/M/1-FCFS queue model. In addition, we extend our approach to handle a heterogenous server environment, i.e., with multiple types of servers. We find that fewer high-capacity servers are preferable for high percentile provisioning. Finally, we extend our approach to account for the rental cost of each server-type and compute a cost efficient application configuration with savings of over 80%. We demonstrate the applicability of our approach in a real world system by employing it to provision the two tiers of the java implementation of TPC-W -- a multi-tier transactional web benchmark that represents an e-commerce web application, i.e. an online bookstore. 
2. Abstract of Cited Paper (BIB002):  An automated solution to horizontal vs. vertical elasticity problem is central to make cloud autoscalers truly autonomous. Today's cloud autoscalers are typically varying the capacity allocated by increasing and decreasing the number of virtual machines (VMs) of a predefined size (horizontal elasticity), not taking into account that as load varies it may be advantageous not only to vary the number but also the size of VMs (vertical elasticity). We analyze the price/performance effects achieved by different strategies for selecting VM-sizes for handling increasing load and we propose a cost-benefit based approach to determine when to (partly) replace a current set of VMs with a different set. We evaluate our repacking approach in combination with different auto-scaling strategies. Our results show a range of 7% up to 60% cost saving in total resource utilization cost of our sample applications and workloads. 
3. Abstract of Cited Paper (BIB003):  Over the past years organizations have been moving their enterprise applications to the cloud to take advantage of cloud's utility computing and elasticity. However, in enterprise applications or workflows, generally, different components/tasks will have different scaling requirements and finding an ideal deployment configuration and having the application to scale up and down based on the incoming requests is a difficult task. This paper presents a novel resource provisioning policy that can find the most cost optimal setup of variety of instances of cloud that can fulfill incoming workload. All major factors involved in resource amount estimation such as processing power, periodic cost and configuration cost of each instance type and capacity of clouds are considered in the model. Additionally, the model takes lifetime of each running instance into account while trying to find the optimal setup. Benchmark experiments were conducted on Amazon cloud, using a real load trace and through two main control flow components of enterprise applications, AND and XOR. In these experiments, our model could find the most cost-optimal setup for each component/task of the application within reasonable time, making it plausible for auto-scaling any web/services based enterprise workflow/application on the cloud. 
4. Abstract of Cited Paper (BIB004):  Improving resource provisioning of heterogeneous cloud infrastructures is an important research challenge. The wide diversity of cloud-based applications and customers with different QoS requirements have recently exhibited the weaknesses of current provisioning systems. Today's cloud infrastructures provide provisioning systems that dynamically adapt the computational power of applications by adding or releasing resources. Unfortunately, these scaling systems are fairly limited:(i) They restrict themselves to a single type of resource, (ii)they are unable to fulfill QoS requirements in face of spiky workload, and (iii) they offer the same QoS level to all their customers, independent of customer preferences such as different levels of service availability and performance. In this paper, we present an autoscaling system that overcomes these limitations by exploiting heterogeneous types of resources, and by defining multiple levels of QoS requirements. The proposed system selects a resource scaling plan according to both workload and customer requirements. Our experiments conducted on both public and private infrastructures show significant reductions in QoS-level violations when faced with highly variable workloads. 
5. Abstract of Cited Paper (BIB005):  Cloud providers sell their idle capacity on markets through an auction-like mechanism to increase their return on investment. The instances sold in this way are called spot instances. In spite that spot instances are usually 90% cheaper than on-demand instances, they can be terminated by provider when their bidding prices are lower than market prices. Thus, they are largely used to provision fault-tolerant applications only. In this paper, we explore how to utilize spot instances to provision web applications, which are usually considered as availability-critical. The idea is to take advantage of differences in price among various types of spot instances to reach both high availability and significant cost saving. We first propose a fault-tolerant model for web applications provisioned by spot instances. Based on that, we devise novel cost-efficient auto-scaling polices that comply with the defined fault-tolerant semantics for hourly billed cloud markets. We implemented the proposed model and policies both on a simulation testbed for repeatable validation and Amazon EC2. The experiments on the simulation testbed and EC2 show that the proposed approach can greatly reduce resource cost and still achieve satisfactory Quality of Service (QoS) in terms of response time and availability. 
6. Abstract of Cited Paper (BIB006):  Autoscaling is a hallmark of cloud computing as it allows flexible just-in-time allocation and release of computational resources in response to dynamic and often unpredictable workloads. This is especially important for web applications, whose workload is time dependent and prone to flash crowds. Most of them follow the 3-tier architectural pattern, and are divided into presentation, application/domain and data layers. In this work, we focus on the application layer. Reactive autoscaling policies of the type “Instantiate a new Virtual Machine (VM) when the average server CPU utilisation reaches X%” have been used successfully since the dawn of cloud computing. But which VM type is the most suitable for the specific application at the moment remains an open question. In this work, we propose an approach for dynamic VM type selection. It uses a combination of online machine learning techniques, works in real time and adapts to changes in the users’ workload patterns, application changes as well as middleware upgrades and reconfigurations. We have developed a prototype, which we tested with the CloudStone benchmark deployed on AWS EC2. Results show that our method quickly adapts to workload changes and reduces the total cost compared to the industry standard approach.

Literature Review:
Regarding a single tier/service within a web application, if the billing is constant, the use of homogeneous VMs is well acceptable as it is easy to manage. The auto-scaling services offered by cloud providers only allow the use of homogeneous VMs. Selecting which type of VM to use is considered the responsibility of users in commercial auto-scalers. The optimal solution depends on the resource profile of the tier/service, e.g., whether it is CPU or memory intensive, and the workload characteristic. Under large workloads, using a small or large instance results in little difference as the remainder of resources that are not used account for a very small percentage of the total resources. Under a small and fluctuant workload smaller instances are preferred, as scaling can be conducted in finer granularity and thus saves cost. Cost efficiency of VMs is highly corelated to the application and workload. If changes happen to them, the choice of VM type should also be reconfigured. Grozev et al. BIB007 proposed a method that detects changes online using the Hierarchical Temporal Memory (HTM) model and a dynamically trained artificial neural network (ANN) and then reselects the most cost-efficient VM type. The use of heterogeneous VMs to scale web applications has been explored in the literature. Under conventional billing, where price grows linearly with VM's capability, heterogeneity can bring some extra cost savings, but these are not significant. Furthermore, the search of the optimal provisioning plan with a combination of heterogeneous VMs is often computing intensive. Srirama et al. BIB004 employed linear programming to solve the provisioning problem, yet only achieved limited cost savings against AWS auto-scaling. Fernandez et al. BIB005 abstracted the provisioning combinations as a tree and searched the proper provisioning by traversing the tree according to different SLAs. Sharma et al. BIB002 used a greedy algorithm to obtain the provisioning plan. In a different scenario in which the capability of VMs increases exponentially to their prices, heterogeneity has the potential to save significant cost, which is shown in Sedaghat et al. BIB003 and Upendra et al. BIB001 . They both consider the transition cost (the time and money spent to convert from the current provisioning to the target provisioning) and the cost of resource combination in the optimization problem. We proposed an auto-scaler BIB006 that uses heterogeneous spot instances to provision web applications. The intention of using heterogeneous VMs in this case is to boost the reliability of clusters based on spot instances to save cost, which is explained in the following section.