Our objective in this work is to present new techniques for Web service
execution and deployment in dynamic environments which can be integrated into
existing service platforms. The first technique we propose is dynamic service
selection. It offers Web services the possibility of selecting and invoking
services at runtime based on a technical specification of the desired service.
Therewith, it provides a layer of abstraction from the actual services.
Constraints enable Web services to influence dynamic service selection. Using
them, services can be selected based on the metadata available about them. After
invocation, replies may be checked for defined properties and discarded, if
necessary. Constraints also allow to specify how many services should be invoked
and how they should be invoked. Constraints may be specified directly when
invoking Web services, but they may also be stored in a service's context. In
the latter case, they are extracted and used automatically for dynamic service
selection by the service platform.
We address load balancing and high availability by providing a generic, modular
dispatcher service for augmenting services with these features, without having
to consider them during the services' development. The dispatcher is a
software-based layer-7 switch with the known advantages: it forwards requests to
different service instances and therefore reduces the risk of a service being
unavailable and speeds up request processing because of load balancing
respectively load sharing. Thus, there is only little skew in the load of hosts
running the service instances and the average response time is kept as low as
possible. Our dispatcher implements a new feature called automatic
service replication. Using this feature new (individually configured) services
can be installed on idle hosts on behalf of the dispatcher to use available
computational power as good as possible. Additional advantages are that the
dispatcher is integrated into the service platform and is completely transparent
to the callers of a service.
Both approaches, dynamic service selection and the dispatcher, support the development, execution and deployment of flexible and reliable services. While dynamic service selection automatically uses alternative services when services fail (reliable execution), the dispatcher service enables service providers to ensure that their services will not fail and are highly responsive (reliable deployment), so that users feel impelled to use services of competitors.
We present these techniques within the scope of the ServiceGlobe system [KSSK02, KSK02]. ServiceGlobe provides a platform to implement, store, publish, discover, and deploy services. Additionally, the system supports mobile code, i.e., services can be distributed and instantiated during runtime on demand at arbitrary Internet servers participating in the ServiceGlobe federation. Of course, ServiceGlobe offers all the standard functionality of a service platform like SOAP/XML communication, a transaction system, and a security system [SBK01]. These areas are well covered by existing technologies and are, therefore, not the focus of this work. Also, we assume that appropriate standards will be developed and incorporated into service platforms.