Services (up)

Introduction (up)

As a SOA is a collection of services it is important to understand the parts, special characteristics, and different types of services within a SOA. The first part of this paragraph briefly describes the different parts of a SOA whereas the second part will focus on the desired characteristics of services in a SOA. Thereafter, a classification of service types is given.  

Parts of a service (up)

[KRA07] divides services into five parts. These different parts of a service can be derived easily by looking at an example of a service: 
From a business perspective when requesting a service first of all both requestor and provider need some kind of agreement (i.e. adequate compensation for provision of a service). This agreement is done via a contract which is the first part of a service. Such a contract usually specifies purpose, usage, constraints, and functionality. Moreover, a service contract can also include a machine readable interface definition which improves flexibility. Nevertheless, the most important part of the contract is a detailed description of the functionality performed by the service. Because a service is usually requested by one or more requestors it needs one or more interfaces which are the second part of a service. The third part of a service is the business logic which should be designed to perform the requested service as stated in the contract. The implementation part of a service is responsible for the technical realization of the business logic and builds the fourth part of a service. The last part of a service is the data processed by the implementation. 

Service characteristics (up)

All services of a SOA are basically implemented independently from each other. Nevertheless, a service could provide its functionality to another service which then to some extent relies on the providing service. The key point in the design of services is that its implementation is completely independent from its interface [BIH06]
According to [MAS07], services should fulfill the following requirements in order to fully leverage the whole potential of a SOA
 

Types of services (up)

Classifying services into service types creates several advantages. Project estimations based on type of services can be far more precise because different types of services need different implementation and maintenance effort. The implementation strategy can also be chosen based on the type of service because the type roughly indicates the complexity of a service. The classification of services given in this paragraph is heavily influenced by the classification mentioned by [KRA07] and [MAS07]. Other classifications as introduced by [KUL08] use different categories but the identified services are comparable, though. The following paragraph gives a description of the four main categories and the application frontend: 

Application frontends (up)

Strictly speaking an application frontend is not a service in a SOA. Nevertheless it is of utmost importance as it represents the most visible part of a SOA. An application frontend directly interacts with the service requestor. It initiates a service on behalf of the requestor and receives the results. It could be realized as graphical user interface as well as a long-living event triggered process. 

Basic services (up)

Since these services are providing the basic functionality they are mandatory parts of a SOA. Basic services are characterized by high reusability, low frequency of change, and relatively low implementation complexity. They can be further divided into data-centric and logic-centric services. 

Intermediary services (up)

These services are used to bridge conceptual or technological gaps in a SOA. Subsequently, the implementation complexity is rather high compared to basic services. The unique requirements and frequent changes in these services result in a low reusability potential. The four categories of intermediate services are: 
Technology gateway service acting as intermediary, adapted from KRA07
Abbildung 1: Technology gateway service acting as intermediary, adapted from KRA07
An obvious real life example of the scenario showed in [1] would be the integration of a legacy system using a technology gateway service as intermediary. 

Process centric services (up)

These services’ primary task is to control the business processes. Hence, they separate process logic from the business logic which is important in order to preserve reusability for the non-process centric services. In contrast to the previously explained processes these processes have to be stateful in order to be able to manage the state of a process and therefore introduce complexity to some extent. However, they also enable the benefits of load balancing. 
An alternative approach to process centric services is to include the task of process control in the application frontend. Although this approach moves the process logic out of the scope of the main services it is a sufficient solution for many cases. 

Public enterprise services (up)

Public services are different from the ones solely used within the enterprise. These services are offered to service consumers who are rather unknown and no tight relationship and hence less trust between service provider and service consumer exist. To overcome the obstacles of loose relationships, public enterprise services have to pay special attention to the choice of granularity, security, and billing. In terms of granularity these services tend to be coarser grained than other services in order to imply the whole business meaning of the provided service. Moreover, these services have to add tougher security mechanisms to comply with the standards and policies for communication outside of the enterprises systems. Another important aspect is billing. Public services most probably result in some kind of cash flow which needs to be accurate and controllable. Although these requirements can be perceived as a barrier to open a SOA to the public it is in many cases worthwhile because it further extends the benefit of a SOA by this kind of business enablement. Such a benefit could be for instance a new business opportunity or new business partnerships enabled by the use of public enterprise services. 

Granularity (up)

Service granularity is a measurement for the size of a service. In this context size refers to the scope of a service as well as the functionality of a service. The fundamental design principle is to allow the accomplishment of one single activity of a business process with one single service interaction [KUL08]. Nevertheless, as mentioned in the service type descriptions, different types of services require a different granularity. 
As shown in [2], the reusability potential is lower, if services are too coarse grained because a coarse grained service represents a specialized task, which is more seldom used than a rather basic unit of a process. Additionally, service changes happen more often because more functionality is bundled within one service. Also overhead can occur because messages have to carry more than the needed data in order to satisfy the requirements of a complex interface. This can negatively affect the performance of a SOA. A negative impact on performance also occurs if a service is too fine grained because various messages need to be exchanged in order to accomplish one unit of work. The selection of the right granularity also heavily affects the SOA governance. Maintainability for instance gets more difficult with a growing number of services which is the result of a too fine grained service design (see [2]). 
 
The impact of service granularity on reusability and maintainability
Abbildung 2: The impact of service granularity on reusability and maintainability
Letzte Änderung: 11.05.2009, 16:09 | 1700 Worte