The service-oriented architecture (SOA) is the frame on which are erected communications between services. Their role is critical to allow, not only their interaction but also their effectiveness, making it possible for the purpose for which they were designed to be fulfilled.
SOA combines two important factors:
- The simplicity of the Object Access Protocols (SOAP) on which web services are based.
- The complexity of allowing interactions between them of a completely autonomous and independent nature.
- And it is that, in this sense, the service-oriented architecture is effective, to such an extent that it is even possible for an entity to take care of a unit of work on behalf of another, or that different consumers can communicate with the service of different ways.
For many, it is the ideal solution to carry out management between suppliers and consumers, thanks to these properties and the environment of protocol flexibility in which it is embedded.
Service-oriented architecture in day-to-day operations
Many everyday situations involve interaction with service-oriented architecture. The most common example is any purchase made over the internet. The process could be summarized as follows:
- First, you access the chosen catalog or online store.
- Then you have access to the list of products for sale, the order of which is specified through a service, which communicates with an inventory application. This allows you to determine if the items requested, or for which interest is shown, are available in the sizes and colors for which the search has been made.
- Once the user has decided on a product, they proceed to purchase. At that time, order details and shipping data are sent to another service that calculates the total amount of the transaction, informs about the delivery time of the requested item, and provides a tracking number.
- After completing the purchase, another service will allow the customer to know the status of their order at any time, by entering the tracking number in the corresponding application.
- Communication is fundamental in this process were, although from the user point of view only a single transaction can be seen, from the systems approach there have been several interactions between many different web services in an SOA framework, as it could not be another way.
The principles governing service-oriented architecture
There are no standards regarding the exact composition of a service-oriented architecture, but some of the most important and commonly applied principles are the following:
- A standardized services contract implies adherence to a communication agreement by virtue of which the services are defined and described, both as a whole and in greater detail.
- Abstraction of services: this conceptualization does not refer to their usability but to the logic behind each service.
- Reuse of services: in search of the economy of development and maintenance, the logic is divided into services with the intention of promoting their reuse.
- Autonomy of services: this principle is applicable to the design and execution phases and refers to the control that services have over the logic they encapsulate.
- Service discovery: With efficiency as the ultimate goal, services are complemented by metadata through which the various opportunities available can be discovered and interpreted.
- Service location transparency refers to the ability of a service consumer to invoke a service, regardless of its location on the network. This principle is articulated around the recognition of discovery property and the right of a consumer to access the service. It can also be interpreted in terms of service virtualization, which would apply in chaos where the consumer simply calls a logical service, while an SOA enables the execution of the infrastructure component, usually, a service bus, that maps this logical service and proceeds to execute the call to the physical service.