Professor Randy Katz,
Eric
Brewer
Introduction:
With the evolution of the Internet, there is a growing demand for creating new functionality by composing existing services and accessing services through extremely diverse end devices. Services in our context are any Internet-accessible applications. This presents an emerging opportunity for a software architecture that, given end-point specifications and desired QoS metrics, automatically composes services in a fashion similar to plugging together tinkertoy-like elements to allow service access through heterogeneous devices and networks.
The key requirements of a service composition platform: automation, scalability, and fault-tolerance. We achieve these goals through strong typing of services, use of cluster computing platforms, and a continuous optimization process with feedback. In addition to service reuse, our system also enables optimal resource utilization in the wide area by strategically placing or locating services and dynamically adapting to resource changes. We prove its usability by demonstrating the ease with which novel functionality results from existing services and good scaling performance of the system.
Terminology:
Operator: a strongly-typed Internet
service instance responsible for computation only.
Connector: the communication protocol
for data transport.
Path: a flow of ADUs through multiple
services and transformational operators across the wide area.
Example APC Path Usage:
Goals of APC service:
Service composability, accessability, scalability, fault-tolerance,
performance predictability, and adaptivity to resource changes.
Architecture of APC service:
APC service is responsible for creating, maintaining, and eventually freeing up data paths consisting of operators strung together by connectors. The overall path construction process can be illustrated through the following diagram:

It is a process of continuous feedback and optimization.
Step 1: Logical Path Creation:
A logical path consists of an ordered sequence of operators
joined by connectors. During the logical path creation, APC searches through
the XML descriptions of the operators to find valid sequences that could
perform the computation requested by the user. The result is a list of
possible operator sequences ordered by decreasing cost on the user's input
parameters for optimization. Optimization criteria are application specific.
One goal of APC is to adapt to application requirements to optimize resource
utilization.
Step 2: Physical Path Creation:
A physical path is a logical path, along with a choice of actual nodes
(i.e. physical machines) on which to run the operators. Nodes for long-lived
operators are chosen from the known service instances that provide the
desired functionality based on application dependent criteria such as network
delay, processing capability, and load information. Nodes for dynamic operators
are selected according to the computational capabilities of the node and
the cost of using that node in the path and various other criteria. Some
of these operator placement decisions include operator computational requirement,
software/hardware requirement, output/input properties (e.g., data location,
data volume, delay-sensitivity, degradation properties), network characteristics
(e.g., bandwidth, delay, packet loss rate, and jitter characteristics.
APC constructs a physical path from a logical path by finding the lowest
cost nodes that meet the user's requirements.
Step 3: Path Instantiation, Execution, Maintenance, and Querying:
Once the physical path has been determined, APC starts any required
dynamic operators and sets up appropriate connectors between the various
operators. After all the nodes in the path are set up, the data flow is
started. In addition, a control path is established between
the operator nodes and APC. It is used for both reporting of error conditions
and performance information.
During the lifetime of the path, APC actively monitors the the operator nodes to make sure that they are functional. Any operator can also report problems to APC about its neighboring operators, so that the path can be repaired when necessary. The control path also plays an important role in enabling operator repair, deletion, and insertion. It is used for exception handling, controlling parameters of path components, monitoring and analyzing path performance. Therefore, it needs to be highly robust and unaffected by the data path's failures. A control path can however overlap with the data path: each path operator can have a handle to its two neighboring operators. APC thus monitors the performance of the path and reroute the data path if new conditions make the original path suboptimal by going back to the physical or logical path creation stages.
Step 4: Path Tear-Down:
When a path is no longer needed, the user informs APC. The APC service
then stops the data flow, removes connectors, shuts down any dynamic operators,
and frees other relevant resources. As a performance optimization, APC
may cache the logical and physical information of commonly used paths for
reuse at a later time.