Self-Adaptation is the capability of a system to adapt in an autonomous way to every change in the scenario in which it operates. This capability is fundamental in distributed systems, since they are composed of thousands of elements that work in a very dynamic and unpredictable environment. Distributed systems plays a central role in the current software development landscape: the advent of technologies like cloud computing changed the development methodologies, moving from applications built as a single and monolithic piece of software to systems composed of a great number of decoupled elements distributed on a large scale. Thus, distributed Self-Adaptive Systems are an actual need and require to be studied in order to understand the most effective way to design and manage them. The literature provides different approaches to deal with such systems. However, while several algorithms for Self-Adaptation have been proposed, stable platforms and comprehensive software engineering approaches for the application of such algorithms to a concrete context are still to come. This thesis addresses these challenges, providing methods and tools to design and manage distributed systems able to autonomously adapt to changes and operate in a concrete and dynamic context. We started from the engineering of an existing decentralized self-adaptive system called the SelfLet Framework, that has been improved and deployed in a Cloud Computing environment in order to be evaluated not through simulation, but with a concrete case study. Despite the results of the evaluation highlight the capability of the SelfLet Framework to adapt a cloud application to the changing workload it can face, we identified some issues for its concrete adoption by practitioners: the use of a framework requires to learn how to use it, and imposes constraints on the technologies adopted for the development of the application. This led to the study and design of a distributed Self-Adaptive System that inherits all the strengths of the SelfLet Framework (decentralization, emergent behavior, encapsulation of the business logic) but that is as decoupled as possible from the technology stack of the application that should be managed. In order to validate our approach we designed and implemented Gru, a tool that exploits the concept of virtual container to bring self-adaptive capabilities to applications developed using the Microservices Architecture pattern and deployed in Docker containers: these technologies have been recently adopted by the major companies in the IT industry and represents a good fit for our prototype. We evaluated the prototype of Gru with a concrete case study, deploying the system in a cloud infrastructure composed of several nodes. Despite the limitations of our prototype, the results of the evaluation show that Gru can adapt the application to the changes in the workload, and validate our approach for the transparent adaptation of a distributed system.

Self-Adaptation è la capacità di un sistema di adattarsi in maniera autonoma ai cambiamenti nello scenario dove opera. Questa capacità è fondamentale per i sistemi distribuiti, essendo composti da migliaia di elementi che operano in un ambiente dinamico ed imprevedibile. I sistemi distribuiti giocano un ruolo centrale nell'attuale panorama dello sviluppo software: l'avvento di tecnologie quali il cloud computing hanno cambiato le metodologie di sviluppo, passando da applicazioni sviluppate come un unico blocco a sistemi composti da un gran numero di elementi distribuiti su larga scala. I sistemi Self-Adaptive distribuiti sono dunque una necessità reale e richiedono di essere studiati per comprendere il modo più efficace per progettarli e gestirli. In letteratura è possibile trovare diversi approcci per la realizzazione di tali sistemi. Tuttavia, mentre sono stati proposti svariati algoritmi per la Self-Adaptation, mancano tuttora piattaforme ed approcci di ingegneria del software per una loro efficace applicazione a contesti concreti. Questa tesi affronta queste sfide, fornendo metodi e strumenti per progettare e gestire sistemi distribuiti in grado di adattarsi autonomamente ai cambiamenti inattesi e operare in un contesto reale e dinamico. Il nostro lavoro è partito da un sistema Self-Adaptive decentralizzato esistente chiamato SelfLet Framework, che è stato migliorato e testato in un'infrastruttura di cloud computing al fine di essere valutato non attraverso una simulazione, ma con un caso di studio concreto. Nonostante i risultati della valutazione evidenzino le capacità del SelfLet Framework, abbiamo identificato alcuni vincoli che potrebbero limitarne l'adozione da parte degli sviluppatori: l'uso di un framework richiede un periodo di apprendimento ed impone dei vincoli sulle tecnologie da adottare per lo sviluppo dell'applicazione. Ciò ha portato allo studio e alla progettazione di un sistema distribuito Self-Adaptive che eredita tutti i punti di forza del SelfLet Framework (decentralizzazione, comportamento emergente, incapsulamento della logica di business), ma che è il più disaccoppiato possibile dall'applicazione che deve essere gestita. Al fine di validare il nostro approccio abbiamo progettato e implementato Gru, un tool che sfrutta il concetto di virtual container per integrare capacità di Self-Adaptation in sistemi sviluppati utilizzando l'architettura a microservizi e distribuiti in Docker containers: queste tecnologie sono state recentemente adottate dalle principali aziende del settore IT e rappresentano un buon banco di prova per il nostro prototipo. Abbiamo valutato il prototipo di Gru con un caso di studio concreto, eseguendo il sistema in un'infrastruttura cloud composta da diversi nodi. Nonostante le limitazioni del nostro prototipo, i risultati della valutazione sono promettenti e validano il nostro approccio per l'integrazione trasparente della Self-Adaptation in un sistema distribuito.

Design and management of distributed self-adaptive systems

FLORIO, LUCA

Abstract

Self-Adaptation is the capability of a system to adapt in an autonomous way to every change in the scenario in which it operates. This capability is fundamental in distributed systems, since they are composed of thousands of elements that work in a very dynamic and unpredictable environment. Distributed systems plays a central role in the current software development landscape: the advent of technologies like cloud computing changed the development methodologies, moving from applications built as a single and monolithic piece of software to systems composed of a great number of decoupled elements distributed on a large scale. Thus, distributed Self-Adaptive Systems are an actual need and require to be studied in order to understand the most effective way to design and manage them. The literature provides different approaches to deal with such systems. However, while several algorithms for Self-Adaptation have been proposed, stable platforms and comprehensive software engineering approaches for the application of such algorithms to a concrete context are still to come. This thesis addresses these challenges, providing methods and tools to design and manage distributed systems able to autonomously adapt to changes and operate in a concrete and dynamic context. We started from the engineering of an existing decentralized self-adaptive system called the SelfLet Framework, that has been improved and deployed in a Cloud Computing environment in order to be evaluated not through simulation, but with a concrete case study. Despite the results of the evaluation highlight the capability of the SelfLet Framework to adapt a cloud application to the changing workload it can face, we identified some issues for its concrete adoption by practitioners: the use of a framework requires to learn how to use it, and imposes constraints on the technologies adopted for the development of the application. This led to the study and design of a distributed Self-Adaptive System that inherits all the strengths of the SelfLet Framework (decentralization, emergent behavior, encapsulation of the business logic) but that is as decoupled as possible from the technology stack of the application that should be managed. In order to validate our approach we designed and implemented Gru, a tool that exploits the concept of virtual container to bring self-adaptive capabilities to applications developed using the Microservices Architecture pattern and deployed in Docker containers: these technologies have been recently adopted by the major companies in the IT industry and represents a good fit for our prototype. We evaluated the prototype of Gru with a concrete case study, deploying the system in a cloud infrastructure composed of several nodes. Despite the limitations of our prototype, the results of the evaluation show that Gru can adapt the application to the changes in the workload, and validate our approach for the transparent adaptation of a distributed system.
BONARINI, ANDREA
BARESI, LUCIANO
7-feb-2017
Self-Adaptation è la capacità di un sistema di adattarsi in maniera autonoma ai cambiamenti nello scenario dove opera. Questa capacità è fondamentale per i sistemi distribuiti, essendo composti da migliaia di elementi che operano in un ambiente dinamico ed imprevedibile. I sistemi distribuiti giocano un ruolo centrale nell'attuale panorama dello sviluppo software: l'avvento di tecnologie quali il cloud computing hanno cambiato le metodologie di sviluppo, passando da applicazioni sviluppate come un unico blocco a sistemi composti da un gran numero di elementi distribuiti su larga scala. I sistemi Self-Adaptive distribuiti sono dunque una necessità reale e richiedono di essere studiati per comprendere il modo più efficace per progettarli e gestirli. In letteratura è possibile trovare diversi approcci per la realizzazione di tali sistemi. Tuttavia, mentre sono stati proposti svariati algoritmi per la Self-Adaptation, mancano tuttora piattaforme ed approcci di ingegneria del software per una loro efficace applicazione a contesti concreti. Questa tesi affronta queste sfide, fornendo metodi e strumenti per progettare e gestire sistemi distribuiti in grado di adattarsi autonomamente ai cambiamenti inattesi e operare in un contesto reale e dinamico. Il nostro lavoro è partito da un sistema Self-Adaptive decentralizzato esistente chiamato SelfLet Framework, che è stato migliorato e testato in un'infrastruttura di cloud computing al fine di essere valutato non attraverso una simulazione, ma con un caso di studio concreto. Nonostante i risultati della valutazione evidenzino le capacità del SelfLet Framework, abbiamo identificato alcuni vincoli che potrebbero limitarne l'adozione da parte degli sviluppatori: l'uso di un framework richiede un periodo di apprendimento ed impone dei vincoli sulle tecnologie da adottare per lo sviluppo dell'applicazione. Ciò ha portato allo studio e alla progettazione di un sistema distribuito Self-Adaptive che eredita tutti i punti di forza del SelfLet Framework (decentralizzazione, comportamento emergente, incapsulamento della logica di business), ma che è il più disaccoppiato possibile dall'applicazione che deve essere gestita. Al fine di validare il nostro approccio abbiamo progettato e implementato Gru, un tool che sfrutta il concetto di virtual container per integrare capacità di Self-Adaptation in sistemi sviluppati utilizzando l'architettura a microservizi e distribuiti in Docker containers: queste tecnologie sono state recentemente adottate dalle principali aziende del settore IT e rappresentano un buon banco di prova per il nostro prototipo. Abbiamo valutato il prototipo di Gru con un caso di studio concreto, eseguendo il sistema in un'infrastruttura cloud composta da diversi nodi. Nonostante le limitazioni del nostro prototipo, i risultati della valutazione sono promettenti e validano il nostro approccio per l'integrazione trasparente della Self-Adaptation in un sistema distribuito.
Tesi di dottorato
File allegati
File Dimensione Formato  
design-management-distributed.pdf

accessibile in internet per tutti

Descrizione: Thesis text
Dimensione 8.59 MB
Formato Adobe PDF
8.59 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/131916