Software systems are becoming every day more complex and pervasive. Part of the complexity derives from the fact that they are immerse in highly dynamic environments, where external conditions may vary without notice. The complexity becomes even more critical when dealing with systems composed of a large number of components, distributed over a network. For this reason, it is now becoming clear that computing systems should be able to manage themselves as much as possible, with the aim of minimizing human intervention during their life-cycle. This thesis focuses on techniques and frameworks which are specifically tailored for decentralized software systems, i.e. systems where distributed elements act without the supervision of a central entity. In particular, our contribution is structured in three main areas. Firstly, we describe a decentralized autonomic framework, the SelfLet, that allows developers to implement decentralized autonomic applications by relying on abstractions such as services, autonomic policies, nodes neighbor relationships etc. Secondly, we present an optimization framework for the SelfLet toolkit able to dynamically assess and predict potential problems and bottlenecks. By means of predefined adaptation actions, the framework generates a set of candidate actions -- according to the internal state of the SelfLet and the one of its neighbors -- and selects the most appropriate action to actuate. Finally, we present two adaptation algorithms -- that could be incorporated into the SelfLet framework -- operating on decentralized distributed systems. In particular, the first algorithm -- inspired by the growth behavior found in fungi's roots -- balances the load among nodes of the system despite the continuous sources of external changes (i.e., node failures). The second algorithm, which also includes a load balancing feature, achieves a resource scaling behavior in a cloud infrastructure context. In particular, the algorithm is able to add or remove computational resources (i.e., nodes in the system) according to the variations observed in the input workload.
I sistemi software stanno diventando ogni giorni sempre più complessi e pervasivi. Parte della complessità deriva dal fatto che essi ``vivono'' immersi in ambienti altamente dinamici, in cui le condizioni esterne al sistema cambiano senza preavviso. Questa complessità diventa ancora più critica quando si viene a contatto con sistemi composti da un elevato numero di componenti distribuiti su una rete. Per questi motivi, sta diventando sempre più chiaro il concetto secondo cui i sistemi software devono essere in grado di gestirsi il più possibile autonomamente, con l'obiettivo di minimizzare l'intervento umano durante la vita del sistema stesso. Questa tesi si focalizza sullo studio di tecniche e framework che sono specificatamente studiati per sistemi software decentralizzati, ovvero sistemi in cui gli elementi distribuiti agiscono senza la supervisione di un'entità centrale. In particolare, il nostro contributo si articola in tre aree principali. Inizialmente, viene descritto un framework autonomico decentralizzato, la SelfLet, che permette allo sviluppatore di implementare applicazioni decentralizzate facendo leva sui concetti di servizio, regole autonomiche, relazioni di vicinanza tra i nodi etc. Nella seconda parte, viene presentato un framework di ottimizzazione per la SelfLet che, tramite delle azioni di adattamento predefinite, è in grado di generare un insieme di azioni candidate -- in base allo stato interno della SelfLet e quello dei suoi vicini -- e selezionare l'azione più appropriata da attuare. Infine, verranno presentati due algoritmi che trovano applicazione nei sistemi distribuiti decentralizzati. In particolare, il primo algoritmo -- ispirato dal comportamento con cui crescono le radici nei funghi -- si occupa di bilanciare il carico tra i nodi del sistema nonostante i continui cambiamenti nell'ambiente circostante (ad esempio guasti nei nodi). Il secondo algoritmo, che include comportamenti di bilanciamento del carico, presenta una caratteristica per lo scaling di risorse in un contesto cloud a livello di infrastruttura. In particolare, l'algoritmo permette di aggiungere o rimuovere le risorse computazionali (ad esempio nodi nel sistema) in base alle variazioni di traffico che si osservano nel carico di lavoro in ingresso.
Decentralized management in distributed autonomic systems
CALCAVECCHIA, NICOLO' MARIA
Abstract
Software systems are becoming every day more complex and pervasive. Part of the complexity derives from the fact that they are immerse in highly dynamic environments, where external conditions may vary without notice. The complexity becomes even more critical when dealing with systems composed of a large number of components, distributed over a network. For this reason, it is now becoming clear that computing systems should be able to manage themselves as much as possible, with the aim of minimizing human intervention during their life-cycle. This thesis focuses on techniques and frameworks which are specifically tailored for decentralized software systems, i.e. systems where distributed elements act without the supervision of a central entity. In particular, our contribution is structured in three main areas. Firstly, we describe a decentralized autonomic framework, the SelfLet, that allows developers to implement decentralized autonomic applications by relying on abstractions such as services, autonomic policies, nodes neighbor relationships etc. Secondly, we present an optimization framework for the SelfLet toolkit able to dynamically assess and predict potential problems and bottlenecks. By means of predefined adaptation actions, the framework generates a set of candidate actions -- according to the internal state of the SelfLet and the one of its neighbors -- and selects the most appropriate action to actuate. Finally, we present two adaptation algorithms -- that could be incorporated into the SelfLet framework -- operating on decentralized distributed systems. In particular, the first algorithm -- inspired by the growth behavior found in fungi's roots -- balances the load among nodes of the system despite the continuous sources of external changes (i.e., node failures). The second algorithm, which also includes a load balancing feature, achieves a resource scaling behavior in a cloud infrastructure context. In particular, the algorithm is able to add or remove computational resources (i.e., nodes in the system) according to the variations observed in the input workload.File | Dimensione | Formato | |
---|---|---|---|
2013_03_PhD_Calcavecchia.pdf
non accessibile
Descrizione: Thesis Text
Dimensione
4.61 MB
Formato
Adobe PDF
|
4.61 MB | Adobe PDF | Visualizza/Apri |
2013_03_PhD_Calcavecchia_bis.pdf
non accessibile
Descrizione: Thesis Text
Dimensione
6.05 MB
Formato
Adobe PDF
|
6.05 MB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/75113