Last time we spoke about the basic of Service-Oriented Architecture or SOA, today we are going to dive deeper into the principles of SOA. There are many vendors that implement SOA solutions and make up of these solution will follow a few principles.
Service contract is an agreement of communication is to take place between the systems that interface. Each will call out its responsibilities to eliminate any issues with assumptions. “System A will pass a part id and the service will return the part diagram image.” Loose Coupling is a design principle for SOA and for general software design. The idea is to reduce the dependencies on outside systems to make changes easier.
Statelessness pushes off the management of state data to reduce storage needs. “Services minimize resource consumption by deferring the management of state information when necessary.” from link. Web services are designed with scalability in mind and capturing overhead such as state information can compromise this.
Abstraction is important to hide the underlying process of the service. Reusability is when the software is broken down adequately that the service can be reused. If the service is tightly coupled most likely it is not reusable either.
Discoverability is important for reuse of the service, it needs to be easily found. One of the items that contribute to the discoverability for a service is a service registry for a directory of available services. Composability is the ability of the service to be used as a building block for other services. The service must be able to cooperate with other services without harming their completion. Iteroperability is crucial for the services as this depends on all the other principles.
Next time we will discuss the Oracle SOA suite and what it offers.
If you enjoyed this please consider sharing and joining are newsletter.