Decentralized Orchestration of Open Services- Achieving High Scalability and Reliability with Continuation-Passing Messaging

Orchestration of the executions of composite services in a serviceoriented architecture is typically carried out by dedicated central engines. With central engines, monitoring and management of executions of composite services are relatively straightforward. However, a central engine can easily become a performance bottleneck when the number of services to be orchestrated is getting large. Furthermore, finding feasible locations for central engines is much harder when the services are beyond enterprise boundaries, especially for open services, services publicly available for wide range of applications, where naturally those services remain outside of the administration boundary of enterprises. We investigate a decentralized approach as an alternative to centralized service orchestration. Decentralized orchestration, however, is generally regarded as more challenging for certain orchestration management tasks due to the absence of global run-time states. The hypothesis of this thesis is that if we let the messages for service orchestration carry the control and status information about service executions, we could dispense with dedicated central engines. Furthermore, if we effectively utilize the current run-time states and future orchestration plans in the messages, we could eventually enhance the reliability of the executions of the composite services. The primary contribution of this dissertation is a fully decentralized approach to orchestration of open services. The approach is called continuation-passing messaging (CPM), where control and run-time state information are carried in messages in terms of continuations. Service orchestration is a process of exchanging and interpreting CMP messages. Our orchestration approach deviates considerably from other decentralized approaches as it does not require pre-allocation of resources to follow up the monitoring and management tasks. Another important contribution of this dissertation is reliability of service orchestration. In our system model, failures may occur in one of two places: either at the service providers or at the orchestration agents. We handle the first type of failures through exception handling of composite services and the second type with replication. Exceptions of composite services could be handled either by backward recovery or forward recovery. The recovery plans can either be specified manually or generated automatically according to certain pre-defined rules. With CPM, we could automatically generate recovery plans at run time and encapsulate them in messages in terms of compensation continuations. We also devised a mechanism for monitoring the executions of services and propagating exceptions through scope managers. We designed a special replication scheme called replicated CPM. It utilizes the run-time status information, which is already distributed among the participant orchestration agents for orchestration, and enhances the handling of the information for backup and replication purposes. It is a flow-oriented replication mechanism where failure of the orchestration agents is handled by the set of the backup agents that are chosen according to the structure of the composition. With replicated CPM, an orchestration activity has a replication degree k, meaning that, it is assigned with a list of k + 1 orchestration agents and can tolerate up to k simultaneous agent crashes. Our performance study showed that decentralized orchestration improves the scalability of the orchestration process. Our orchestration approach has a clear performance advantage over traditional centralized orchestration and over the current practice of web mashups where application servers themselves conduct the execution of the composition of open web services. Finally, in our performance study we presented the overhead of the replication approach for services orchestration.