Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> SESSION STICKINESS <s> Scalability and performance are key factors to the success of many enterprises involved in doing business on the web. Maintaining sufficient web resources just to meet performance during peak demands can be costly. Compute Cloud provides a powerful environment to allow dynamic scaling of web applications without the needs for user intervention. In this paper, we present a case study on the scalability and performance of web applications in a Cloud. We describe a novel dynamic scaling architecture with a front-end load-balancer for routing user requests to web applications deployed on virtual machine instances with the goal of maximizing resource utilization in instances while minimizing total number of instances. A scaling algorithm for automated provisioning of virtual resources based on threshold number of active user sessions will be introduced. The on-demand capability of the Cloud to rapidly provision and dynamically allocate resources to users will be discussed. Our work has demonstrated the compelling benefits of a Cloud which is capable of sustaining performance upon sudden load surges, delivering satisfactory IT resources on-demands to users, and maintaining high resource utilization, thus reducing infrastructure and management costs. <s> BIB001 </s> Auto-Scaling Web Applications in Clouds: A Taxonomy and Survey <s> SESSION STICKINESS <s> Cloud data centers are becoming the preferred deployment environment for a wide range of business applications because they provide many benefits compared to private in-house infrastructure. However, the traditional approach of using a single cloud has several limitations in terms of availability, avoiding vendor lock-in, and providing legislation-compliant services with suitable Quality of Experience (QoE) to users worldwide. One way for cloud clients to mitigate these issues is to use multiple clouds (i.e., a Multi-Cloud). In this article, we introduce an approach for deploying three-tier applications across multiple clouds in order to satisfy their key nonfunctional requirements. We propose adaptive, dynamic, and reactive resource provisioning and load distribution algorithms that heuristically optimize overall cost and response delays without violating essential legislative and regulatory requirements. Our simulation with realistic workload, network, and cloud characteristics shows that our method improves the state of the art in terms of availability, regulatory compliance, and QoE with acceptable sacrifice in cost and latency. <s> BIB002
A session is a series of interactions between a client and the application. After each operation, the client waits for the reply given by the application and then proceeds. To ensure a seamless experience, it is necessary to keep the intermediate statuses of clients during their sessions. Otherwise, the operations conducted by the clients will be lost and they have to repeat the previous operations to proceed. Taking a social network application as an example, a session may involve the following operations: the client first accesses the home page and then logs into the application; after that, he or she performs several actions such as viewing his or her and friends' timeline, uploading photos, and updating his or her status, before quitting the application. This session-based access pattern has caused issues in efficiently utilizing elastic resources in the cloud because the stateful nature of the session forces the user to be connected to the same server each time he or she submits a request within the session if the session data is stored in the server. Such sessions are considered sticky. They limit the ability of the auto-scaler to terminate underutilized instances when there are still unfinished sessions handled by them. Therefore, it is regarded as a prerequisite to transforming stateful servers into stateless servers before an autoscaler can manage them. There are multiple ways to achieve this, and a complete introduction to them is out of the scope of this article. The most adopted approach is to move the session data out of the web servers and store them either at the user side or in a shared Memcached cluster. Though most auto-scalers require the scaling cluster to be stateless, some auto-scalers are designed to handle stateful instances. Chieu et al. BIB001 proposed an auto-scaler based on the number of active sessions in each server. Their approach requires a server to clear all its active sessions before it can be terminated. Grozev et al. BIB002 proposed a better approach by integrating a similar auto-scaler with a load balancing algorithm that consolidates sessions within as few instances as possible.