Most modern software systems have a decentralized, modular, distributed, and dynamic structure. They are often composed of heterogeneous components and operate on several different infrastructures. They are increasingly built by composing services; that is, components owned (designed, deployed, maintained, and run) by remote and independent stakeholders. The quality of service perceived by the clients of such a composite application depends directly on the individual services that are integrated in it, but also on the way they are composed. At the same time, the world in which such applications are situated (in particular, the remote services upon which they can rely) change continuously. These requirements ask for an ability of applications to self-adapt to dynamic changes, especially when they need to run for a long time without interruption. This, in turn, has an impact on the way service compositions are implemented using ad-hoc process languages defined to support compositions. Indeed, the principles behind Service Oriented Computing (SOC) has brought a simplification in the way distributed applications are developed. We claim, however, that the fully potential of SOC is still to be reached and it is our belief that this is caused by the same tools used to build such service compositions. Indeed, mainstream approaches failed to support dynamic, self-managed compositions, characteristics they must have due to the changeable world they are embedded in, where it is essential to be able to adapt to changes that may happen at run-time. Unfortunately, mainstream SOC languages make it quite hard to develop such kind of self-adapting compositions. It is specially hard because they too closely resemble traditional languages, with their imperative style of programming: it requires service architects to take care of an intricate control flow, in which one tries to capture all possible ways things can go wrong and react properly to exceptional conditions. A great effort is required to program the application to continue to meet its requirements in the presence of anticipated or unanticipated changes. In this thesis we present DSOL - Declarative Service Orchestration Language, a novel approach in which we abandon the imperative style adopted by currently available languages in favor of a strongly declarative alternative. DSOL allows an orchestration to be modeled by giving a high-level description of the elementary activities, a loosely coupled implementation layer and the overall Goal to be met by the orchestration. DSOL models are then executed by an ad-hoc service orchestration engine, which leverages automatic planning techniques to elaborate, at run-time, the best sequence of activities to achieve the goal. Whenever a change happens in the external environment, which prevents execution to be completed, DSOL engine behaves in a self-healing manner. Through dynamic re-planning and advanced re-binding mechanisms, it finds an alternative path toward the goal and continues executing it, until the goal of the orchestration is reached. DSOL provides several advantages w.r.t. traditional approaches, ranging from a better support for the implementation of self-adaptive orchestrations to a more decoupled architecture in which they may smoothly evolve to cope with exceptional situations or to requirement changes. DSOL models also promotes a more readable and maintainable code through a clear separation of concerns, in which the orchestration logic is isolated from the logic to used to handle and adapt to exceptional situations.
In questa tesi presentiamo DSOL - Declarative Service Orchestration Language, un nuovo approccio in cui si abbandona lo stile imperativo spesso adottato in favore di un'alternativa dichiarativa. DSOL permette che la orchestrazione di servizi sia modellato da una descrizione ad alto livello delle attività elementari, e dell'obiettivo generale dalla orchestrazione. I modelli definiti usando DSOL vengono poi eseguiti da un apposito motore di orchestrazione dei servizi, che sfrutta tecniche di pianificazione automatica per elaborare, in fase di esecuzione, la migliore sequenza di attività per raggiungere l'obiettivo. Ogni volta che un cambiamento avviene nell'ambiente esterno, che impedisce esecuzione da completare, il motore DSOL si comporta in un modo self-adaptive, ri-pianificando fino al raggiungimento del goal della orchestrazione. DSOL fornisce diversi vantaggi in confronto agli approcci tradizionali, che vanno da un miglior supporto per l'attuazione di autoadattativi orchestrazioni a un'architettura più disaccoppiato in cui possono facilmente evolvere per affrontare eccezionali situazioni o cambiamenti dei requisiti.
A declarative approach to self adaptive service orchestrations
SALES HOLANDA PINTO, LEANDRO
Abstract
Most modern software systems have a decentralized, modular, distributed, and dynamic structure. They are often composed of heterogeneous components and operate on several different infrastructures. They are increasingly built by composing services; that is, components owned (designed, deployed, maintained, and run) by remote and independent stakeholders. The quality of service perceived by the clients of such a composite application depends directly on the individual services that are integrated in it, but also on the way they are composed. At the same time, the world in which such applications are situated (in particular, the remote services upon which they can rely) change continuously. These requirements ask for an ability of applications to self-adapt to dynamic changes, especially when they need to run for a long time without interruption. This, in turn, has an impact on the way service compositions are implemented using ad-hoc process languages defined to support compositions. Indeed, the principles behind Service Oriented Computing (SOC) has brought a simplification in the way distributed applications are developed. We claim, however, that the fully potential of SOC is still to be reached and it is our belief that this is caused by the same tools used to build such service compositions. Indeed, mainstream approaches failed to support dynamic, self-managed compositions, characteristics they must have due to the changeable world they are embedded in, where it is essential to be able to adapt to changes that may happen at run-time. Unfortunately, mainstream SOC languages make it quite hard to develop such kind of self-adapting compositions. It is specially hard because they too closely resemble traditional languages, with their imperative style of programming: it requires service architects to take care of an intricate control flow, in which one tries to capture all possible ways things can go wrong and react properly to exceptional conditions. A great effort is required to program the application to continue to meet its requirements in the presence of anticipated or unanticipated changes. In this thesis we present DSOL - Declarative Service Orchestration Language, a novel approach in which we abandon the imperative style adopted by currently available languages in favor of a strongly declarative alternative. DSOL allows an orchestration to be modeled by giving a high-level description of the elementary activities, a loosely coupled implementation layer and the overall Goal to be met by the orchestration. DSOL models are then executed by an ad-hoc service orchestration engine, which leverages automatic planning techniques to elaborate, at run-time, the best sequence of activities to achieve the goal. Whenever a change happens in the external environment, which prevents execution to be completed, DSOL engine behaves in a self-healing manner. Through dynamic re-planning and advanced re-binding mechanisms, it finds an alternative path toward the goal and continues executing it, until the goal of the orchestration is reached. DSOL provides several advantages w.r.t. traditional approaches, ranging from a better support for the implementation of self-adaptive orchestrations to a more decoupled architecture in which they may smoothly evolve to cope with exceptional situations or to requirement changes. DSOL models also promotes a more readable and maintainable code through a clear separation of concerns, in which the orchestration logic is isolated from the logic to used to handle and adapt to exceptional situations.File | Dimensione | Formato | |
---|---|---|---|
pinto_leandro.pdf
accessibile in internet per tutti
Descrizione: Testo della tesi
Dimensione
4.6 MB
Formato
Adobe PDF
|
4.6 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/74828