Service Oriented Architecture (SOA)
A Service-Oriented Architecture or SOA is a design pattern which is designed to build distributed systems that deliver services to other applications through the protocol. It is only a concept and not limited to any programming language or platform.
What is Service?
A service is a well-defined, self-contained function that represents a unit of functionality. A service can exchange information from another service. It is not dependent on the state of another service. It uses a loosely coupled, message-based communication model to communicate with applications and other services.
Service Connections
The figure given below illustrates the service-oriented architecture. Service consumer sends a service request to the service provider, and the service provider sends the service response to the service consumer. The service connection is understandable to both the service consumer and service provider.
Service-Oriented Terminologies
Let’s see some important service-oriented terminologies:
- Services – The services are the logical entities defined by one or more published interfaces.
- Service provider – It is a software entity that implements a service specification.
- Service consumer – It can be called as a requestor or client that calls a service provider. A service consumer can be another service or an end-user application.
- Service locator – It is a service provider that acts as a registry. It is responsible for examining service provider interfaces and service locations.
- Service broker – It is a service provider that pass service requests to one or more additional service providers.
Characteristics of SOA
The services have the following characteristics:
- They are loosely coupled.
- They support interoperability.
- They are location-transparent
- They are self-contained.
Components of service-oriented architecture
The service-oriented architecture stack can be categorized into two parts – functional aspects and quality of service aspects.
Functional aspects
The functional aspect contains:
- Transport – It transports the service requests from the service consumer to the service provider and service responses from the service provider to the service consumer.
- Service Communication Protocol – It allows the service provider and the service consumer to communicate with each other.
- Service Description – It describes the service and data required to invoke it.
- Service – It is an actual service.
- Business Process – It represents the group of services called in a particular sequence associated with the particular rules to meet the business requirements.
- Service Registry – It contains the description of data which is used by service providers to publish their services.
Quality of Service aspects
The quality of service aspects contains:
- Policy – It represents the set of protocols according to which a service provider make and provide the services to consumers.
- Security – It represents the set of protocols required for identification and authorization.
- Transaction – It provides the surety of consistent result. This means, if we use the group of services to complete a business function, either all must complete or none of the complete.
- Management – It defines the set of attributes used to manage the services.
Advantages of SOA
SOA has the following advantages:
- Easy to integrate – In a service-oriented architecture, the integration is a service specification that provides implementation transparency.
- Manage Complexity – Due to service specification, the complexities get isolated, and integration becomes more manageable.
- Platform Independence – The services are platform-independent as they can communicate with other applications through a common language.
- Loose coupling – It facilitates to implement services without impacting other applications or services.
- Parallel Development – As SOA follows layer-based architecture, it provides parallel development.
- Available – The SOA services are easily available to any requester.
- Reliable – As services are small in size, it is easier to test and debug them.