In the last decade the increasing number of connected devices, the rise of cloud computing and the explosion of the size and velocity of data changed and shaped the requirements, the development process and the architectures of software systems. Nowadays, for example, web-applications are deployed and executed into the cloud, and single monolithic deployments are split in many modular services to individually develop and manage functionalities. Moreover special-purpose frameworks for parallel batch processing are emerging to cope with large amounts of data. One of the challenges to be addressed on these software systems is how to provision and optimize resources to meet a varying demand since fluctuating workloads, unpredictable peaks of traffic, and unexpected changes are increasingly common phenomena. Without taking care of these contingencies, service providers struggle in satisfying functional and non-functional requirements, usually defined in SLAs (Service Level Agreements). To avoid resource saturation and unresponsiveness, users dissatisfaction and unnecessary costs, the provisioning of resources must be elastic, that means being capable of automatically adapt to changes in the execution environment that could affect the quality of service perceived by the users. Therefore resources allocated to a system should match as closely as possible the demand. One of the key metrics that captures the quality of a service of a system is the speed of answer that is often the subject of non-functional requirements defined in SLAs as a constraints over the time to answer one or more requests. Moreover the elastic provisioning of resources must be automatic to be less error prone and to reduce the complexity of managing the services at runtime. For this reason, elasticity can be materialized in autonomic systems whose behavior can change automatically according to the state of the system itself and of the environment. State of the art solutions focus on the control of software systems deployed in the cloud by changing the number of allocated virtual machines using mainly heavyweight techniques such as optimization problems or delegating to the system administrators part of the adaptation process (i.e., rule-based approaches). Moreover virtual machines are relatively slow to be provisioned (around six minutes on average) and only available in fixed configurations limiting how fast and precise the adaptation could be. This thesis aims to study, analyze and evaluate novel technologies and models that enable the creation of lightweight, autonomous, fine-grained and fast elastic resource provisioning for modern software systems. Its main contribution is the technique used to plan and enact the control actions. It mixes containers, a lightweight virtualization technology that enables the fast and fine-grained elasticity, and control theory that provides a lightweight theoretical foundation for controlling these systems. Containers can be provisioned in seconds and re-configured in milliseconds while control theory enables the computation of next allocations in constant amount of time. In the solution we used gray-box controllers: they capture just the main characteristics of the controlled system abstracting away many implementation details. We applied this methodology to two real-world scenarios: web and big-data applications. For the first area we present ECoWare, an autonomic system that allows containerized web-applications to scale their resources both at the VM level and at the container level. Furthermore, applications can combine this infrastructural adaptation with higher level (such as middleware or application level) adaptation actions. The experiments show that our planner out- performs Amazon’s AutoScaling by 78% on average without containers; and that the introduction of containers allows us to improve by yet another 46% on average. Instead, xSpark is dedicated to the control of big-data batch applications. This type of systems manipulate huge quantities of data and users are often interested in quantifying and constraining the execution times (deadlines) for completing single runs. xSpark is a novel container-based extension to the Spark framework that exploits container technology to provide extremely fine-grained resource allocation. While vanilla Spark does not allow users to constrain deadlines, xSpark allows that and allocates required resources accordingly at runtime. The evaluation on four well known benchmark applications witnesses that xSpark was able to use less resources than native Spark and complete the executions with a less than 2% error in terms of set deadlines. Since this work mainly focuses on CPU allocation, future works include the support in the adaptation process of more resource types such as memory, storage and networking. Moreover the approach could be extended to handle the simultaneous control of web and big-data applications in heterogeneous cluster. Finally we plan to apply a similar methodology to new areas such as the Internet of Things and Fog computing.

Negli ultimi anni l’aumento del numero di dispositivi connessi ad Internet, l’avvento del cloud computing e l’esplosione della dimensione e della velocità dei dati ha trasformato i requisiti, le metolodogie di sviluppo e l’architettura dei sistemi software. Oggigiorno, per esempio, le applicazioni web sono installate ed eseguite nel cloud e le cosidette architetture monolitiche hanno lasciato il posto a sistemi a servizi modulari, più efficenti in quanto gestibili singolarmente. Inoltre sono emersi sistemi specializzati nell’analisi e nella computazione parallela di grandi raccolte di dati. I sistemi software moderni sono spesso offerti come servizi ed i loro gestori devono garantire agli utenti una adeguata qualità nel servizio che è espressa in vincoli sul tempo di risposta ad una o più richieste. Questa tesi analizza come migliorare questi sistemi con componenti per l’adattamento automatico (senza intervento umano) finalizzato alla allocazione elastica di risorse. Tale elasticità prevede che l’allocazione sia sempre in una quantità tale per cui le richieste, il cui numero cambia nel tempo, vengano soddisfatte entro la qualità del servizio predefinita ma anche ottimizzandone l’uso per evitare sprechi. Il contributo principale della tesi consiste nel combinare i containers, un tecnica di virtualizzazione che abilita una veloce allocazione a grana fine, e la teoria del controllo che permette di sfruttare tale tecnologia con degli strumenti matematici computazionalmente leggeri. I prototipi risultanti, ECoWare e xSpark, dedicati rispettivamente alle applicazioni cloud e big-data, sono stati valutati con esperimenti non simulati sul cloud che dimostrano come la tecnica presentata migliori lo stato dell’arte.

Fast and fine-grained elastic resource provisioning for modern software systems

QUATTROCCHI, GIOVANNI

Abstract

In the last decade the increasing number of connected devices, the rise of cloud computing and the explosion of the size and velocity of data changed and shaped the requirements, the development process and the architectures of software systems. Nowadays, for example, web-applications are deployed and executed into the cloud, and single monolithic deployments are split in many modular services to individually develop and manage functionalities. Moreover special-purpose frameworks for parallel batch processing are emerging to cope with large amounts of data. One of the challenges to be addressed on these software systems is how to provision and optimize resources to meet a varying demand since fluctuating workloads, unpredictable peaks of traffic, and unexpected changes are increasingly common phenomena. Without taking care of these contingencies, service providers struggle in satisfying functional and non-functional requirements, usually defined in SLAs (Service Level Agreements). To avoid resource saturation and unresponsiveness, users dissatisfaction and unnecessary costs, the provisioning of resources must be elastic, that means being capable of automatically adapt to changes in the execution environment that could affect the quality of service perceived by the users. Therefore resources allocated to a system should match as closely as possible the demand. One of the key metrics that captures the quality of a service of a system is the speed of answer that is often the subject of non-functional requirements defined in SLAs as a constraints over the time to answer one or more requests. Moreover the elastic provisioning of resources must be automatic to be less error prone and to reduce the complexity of managing the services at runtime. For this reason, elasticity can be materialized in autonomic systems whose behavior can change automatically according to the state of the system itself and of the environment. State of the art solutions focus on the control of software systems deployed in the cloud by changing the number of allocated virtual machines using mainly heavyweight techniques such as optimization problems or delegating to the system administrators part of the adaptation process (i.e., rule-based approaches). Moreover virtual machines are relatively slow to be provisioned (around six minutes on average) and only available in fixed configurations limiting how fast and precise the adaptation could be. This thesis aims to study, analyze and evaluate novel technologies and models that enable the creation of lightweight, autonomous, fine-grained and fast elastic resource provisioning for modern software systems. Its main contribution is the technique used to plan and enact the control actions. It mixes containers, a lightweight virtualization technology that enables the fast and fine-grained elasticity, and control theory that provides a lightweight theoretical foundation for controlling these systems. Containers can be provisioned in seconds and re-configured in milliseconds while control theory enables the computation of next allocations in constant amount of time. In the solution we used gray-box controllers: they capture just the main characteristics of the controlled system abstracting away many implementation details. We applied this methodology to two real-world scenarios: web and big-data applications. For the first area we present ECoWare, an autonomic system that allows containerized web-applications to scale their resources both at the VM level and at the container level. Furthermore, applications can combine this infrastructural adaptation with higher level (such as middleware or application level) adaptation actions. The experiments show that our planner out- performs Amazon’s AutoScaling by 78% on average without containers; and that the introduction of containers allows us to improve by yet another 46% on average. Instead, xSpark is dedicated to the control of big-data batch applications. This type of systems manipulate huge quantities of data and users are often interested in quantifying and constraining the execution times (deadlines) for completing single runs. xSpark is a novel container-based extension to the Spark framework that exploits container technology to provide extremely fine-grained resource allocation. While vanilla Spark does not allow users to constrain deadlines, xSpark allows that and allocates required resources accordingly at runtime. The evaluation on four well known benchmark applications witnesses that xSpark was able to use less resources than native Spark and complete the executions with a less than 2% error in terms of set deadlines. Since this work mainly focuses on CPU allocation, future works include the support in the adaptation process of more resource types such as memory, storage and networking. Moreover the approach could be extended to handle the simultaneous control of web and big-data applications in heterogeneous cluster. Finally we plan to apply a similar methodology to new areas such as the Internet of Things and Fog computing.
BONARINI, ANDREA
AMIGONI, FRANCESCO
19-gen-2018
Negli ultimi anni l’aumento del numero di dispositivi connessi ad Internet, l’avvento del cloud computing e l’esplosione della dimensione e della velocità dei dati ha trasformato i requisiti, le metolodogie di sviluppo e l’architettura dei sistemi software. Oggigiorno, per esempio, le applicazioni web sono installate ed eseguite nel cloud e le cosidette architetture monolitiche hanno lasciato il posto a sistemi a servizi modulari, più efficenti in quanto gestibili singolarmente. Inoltre sono emersi sistemi specializzati nell’analisi e nella computazione parallela di grandi raccolte di dati. I sistemi software moderni sono spesso offerti come servizi ed i loro gestori devono garantire agli utenti una adeguata qualità nel servizio che è espressa in vincoli sul tempo di risposta ad una o più richieste. Questa tesi analizza come migliorare questi sistemi con componenti per l’adattamento automatico (senza intervento umano) finalizzato alla allocazione elastica di risorse. Tale elasticità prevede che l’allocazione sia sempre in una quantità tale per cui le richieste, il cui numero cambia nel tempo, vengano soddisfatte entro la qualità del servizio predefinita ma anche ottimizzandone l’uso per evitare sprechi. Il contributo principale della tesi consiste nel combinare i containers, un tecnica di virtualizzazione che abilita una veloce allocazione a grana fine, e la teoria del controllo che permette di sfruttare tale tecnologia con degli strumenti matematici computazionalmente leggeri. I prototipi risultanti, ECoWare e xSpark, dedicati rispettivamente alle applicazioni cloud e big-data, sono stati valutati con esperimenti non simulati sul cloud che dimostrano come la tecnica presentata migliori lo stato dell’arte.
Tesi di dottorato
File allegati
File Dimensione Formato  
thesis.pdf

accessibile in internet solo dagli utenti autorizzati

Dimensione 2.69 MB
Formato Adobe PDF
2.69 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/137770