Term PaperCSE 532Harithan R Velagala
Abstract :
Service oriented architecture is an software architecture model in which the functionalities are logically grouped and encapsulated . These are reusable units that are distributed over a network and can be used collectively to create new applications. These units are self contained with specifications of functionality, purpose and interfaces. This paper mainly describes the driving principles of SOA and other examples associated with it.
Introduction :
Service oriented architecture is a way of developing distributed systems. The ultimate goal of adopting service oriented architecture is to achieve interoperability and modifiability . These are achieved using the architecture principles of SOA . It is very important to even understand how these principles individually effect the attributes of quality like interoperability , modifiability, performance , reusability and testability. These attributs are considered to have a positive or negitive effect based on application of each of the principles of architecture of SOA.
The following picture gives us a better understanding of a business model before and after applying the SOA architecture
Source : “IBM”
The SOA enables a virtual group to work and collaborate in a business process, here the group is nothing but the services interacting at an instance.
Principles of Service Orieted Architecture
Standardization:
Standardized service contract: The services should adopt to a communications aggrement , which is defined by the service aggrement document.Considering the web servicesby standardization there is a positive effect on interoperability and modifiability , performance will have a negitive effect as using a standard such as XML would demand more processing . If there are enough resources for the processing reusability is one thing that can be achieved. In the case of security it depends on the services acting on that instance.
Loose coupling :
The relationship maintained by the services is limited to their interaction and the dependencies are minimum and only to the requirement. The services must be independent and self contained . The services must be able to respond to messages as intended and should consider the message content as input for their operation, the service should also be aware of how its output will be utilized . specific types of relations are to be created with in and outside of service boundaries to reduce the dependencies between service contract implementation and consumers .
Example of loose coupled system at a single level:
Reusability:
Here reusability refers to that of service reusability. Because of the self contained functionality of the services they are reusable. These services can communicate at an instance to form a business function. To achieve reusability services such as login and utility should not be included in the core process and should be developed as independent services. This helps at avoiding duplication of logic and ensures reusability.
When the services do not maintain states, they are capable of meeting demands like redundancy , scalability and load balancing.
Figure shows a single service being used for different purposes :
The reusable services will have a positive effect on interoperability and maintainability but maintaining all of the services without any states may degrade the performance due to communications.
Composability:
The composability ensures that services are able to partisipate in multiple compositions and thus solve larger problems
The charectaristics of services in reusability do apply for the composability, additionally composability largely depends on identification of the services and proper interfacing of these services, and also services should work regardless of the size and complexity of the composition. The following figure gives a better idea of composability
Discoverability:
Services are provided with communicative metadata with which they are identified and discovered when a service is necessary. This is nothing but the service registory. The consumers can query the registory and look for their desired services to perform a specific task. The metedata associated with a servvice consists of the interface specifications or the contract.
The service repository can contain the service attributes like description , classification and usage history of that particular service along with the quality metrics and other documentation
Discoverability and creation of new services:
In the above figure a qury is placed on the metadata of the available services and new services are obtained as per the need of the consumer
Conclusions :
- SOA is an architectural style of developing and using distributed systems.
- Interoperability and modifiability of a systrem can be achieved by using the principles of loose coupling, composability, standardization etc.
- Adopting SOA may some times effect the quality attributes that might be importatant to the consumers .
- SOA is appropriate in some situations and completly unnecessary in other situations, so it should be applied only if necessary .
- SOA cannot be applied at instances where memory and processing are limited for example the embedded systems.
- SOA increases the complexity of a system , but decreases the effort when changes in a system are frequent.
- Duplication of logic is reduced when SOA is applied.
- SOA is recommended only when the modifications and changes in a system are imminent.
1