A Tile-based Approach for Self-assembling Service Compositions
Published on: Published on::2011/3/22
abstract
Service oriented architectures use loosely coupled component services, possibly built by third party vendors, accessing them through a programming interface. Fine-grained services can be composed in more coarse-grained services, incorporating them into business processes and work-flows. The possibility for creating new systems from simple combination of existing services calls for creating a proper machinery that automate the assembling process. Moreover, as services could be owned by third party, they are not necessarily under the direct control of system developers. Consequently the system using them should be able to self-adapt to changes caused, for instance, by their unavailability or failure. The approach we propose addresses the two issues above, getting inspiration from the notion of tile-based system. This model is used to encode how some available components can be assembled together according to the constraints that their inclusion introduces in the overall system. Similarly our approach starts from the specification of a subset of the system and of some constraints, and automatically computes on the fly a suitable composition of available services. The approach is also capable of re-computing the composition, in case the application needs to self-adapt by replacing some services. The constraints are specified only locally to each component, and independently of the actual setup of the overall system. This “local nature” of the systems entails that service replacement can usually be confined to the region of failure and does not require an expensive re-design of the whole system from scratch. While service-tiles represent the computational model we use at the abstract level, when a certain composition has to be executed in practice, we face the problem of using interfaces that could be syntactically different from the expected ones. To cope with this problem we propose an approach for automatically enabling the synthesis of mapping scripts, finite length sequences of instructions, which associate operations that the client is assuming to invoke on the expected service into the corresponding sequences made available by the service that will be actually used. Such mapping scripts are then interpreted by adapters that intercept all service requests issued by the client and transform them into the requests the services are able to fulfill.