|Thesis abstract: |
One of the main problems that service providers face is how to respect the functional and non-functional requirements of their Web applications in the wake of significant workload fluctuations, without over-allocating resources. Recent studies estimate that the average server utilization is around 30-40% or even lower. A better utilization of resources would lead to more efficient systems. Furthermore, the architecture of these Web applications, which are typically deployed on private or public clouds, are becoming more and more complex, to better support increasing data volumes and computational demands. Self-adaptive systems can dynamically change the resource allocation and configuration of these systems, allowing them to react to unexpected variations in the workload or changes in the execution context. Current systems generally focus a single facet of the aforementioned applications and only adopt coarse-grained autonomic capabilities, such as increasing the number of servers or VMs. The challenge of this research project is to investigate the benefits of a more comprehensive and finer-grained approach for elastic adaptation. Adaptation techniques have to be applied to all the aspects of the application (e.g. the middleware or the application level). Furthermore, novel lightweight virtualization technologies, such as operating-system-level virtualization, can enable new forms of adaptation. The increasing complexity of software architectures has to be addressed in a topology-aware fashion; the self-adaptive system must know the types of components that compose the application, how these components are interconnected to each other, and how they are deployed at run-time. Part of this research will be focused on how to model these complex architectures and predict their behavior in a continuously mutating environment. To this purpose, well know principles, such as the control theory, will be considered for improving the state of the art. Finally an aim of this doctorate will also concern how adaptation can be applied to the lower level of the cloud which is run by cloud providers. The challenges of this problem are twofold. First, cloud providers have enormous server farms that can be intrinsically difficult to handle because of their scale; moreover known optimal solutions available for single applications can be ineffective if applied to this case. Second, on top of this level there are potentially many adaptation cycles running on different applications; having lower level elasticity rules applied to a wider context implies managing a hierarchy of self-adaptive cycles, a research topic that is currently unexplored.