|
Page 1 of 2
SOA Principles
In this SOA article, we will focus on some of the core principles of Service Oriented Architecture viz service abstraction, service reusability, service composability, service autonomy, service optimization, service discoverability, service-orientation and interoperability, standardized service contract.
Service Abstraction
Abstraction is also known under its full name as service interface level abstraction. It is this principle that allows us to establish services as black boxes, hiding their underlying details from potential customers. Abstraction is achieved through a utilization of service contracts. Through limiting what is made public about a service to what is documented in the service contract, a high level of separation can often be attained between what emerges as public and private. This is because of the fact that it is supportive of loosely coupled relationships.
The amount of logic that a service may represent is indeed limitless. Services can be designed to perform simple tasks. They may also be positioned to serve as gateways to entire automation solutions. There is no restriction when it comes to the source of automation logic a service is able to draw upon. A single service, for instance, may expose logic from several different underlying systems.
As the standardization of service models is something that is moved towards as a means of establishing functional contexts associated with given business tasks or entities, it becomes a given that in environments that have a number of different legacy solutions, at least one service will commonly expose functionality that relies on a number of different systems.
Distributed platforms provide service interface level abstraction as one of its main qualities. Distributed platforms also provide web services based architectures. The utilization of web services can be especially synergetic owing to the fact that they elevate the degree of attainable abstraction beyond functionality. Web services abstract proprietary implementation details of the automation logic that lies beneath the service. This effectively frees up potential consumers of the service from the strain of having to interface with particular vendor technologies.
Despite the fact that abstraction can be viewed as a service characteristic, in truth it is the individual operations that work to collectively abstract the service’s underlying logic. Services merely perform as containers for such operations. Any service’s given level of abstraction will thus be determined to a large degree by the collective levels of abstraction that are acquired by each of its service operations.
Service Reusability
One of the most vital principles of Service Oriented Architecture is service reusability. And in this day and age, it can be said that we have been making a lot of progress towards improving both this central tenet and Service Oriented Architecture in general. One sign that a significant degree of progress in the field has been made is the fact that more and more questions regarding Service Oriented Architecture these days are aimed at the architecture itself, rather than infrastructure and implementation.
One question that has come up in recent years is: Should all services be reusable? This question has a deceptively simple answer. Since it is one of the tenets of Service Oriented Architecture to build services that are reusable, then indeed all of them should be, right? But upon further examination, finding an answer to this question may require greater demands of subtlety – as well as deeper thinking in architectural terms.
Service Composability
The principle of Service Oriented Architecture known as service composability can be broken up in to two basic principles: service discoverability and service composition. When it comes to the realm of service design, a lot of attention is paid to the enabling of those characteristics that are so commonly associated with Service Oriented Architecture marketing – reuse and loose coupling. While these two aspects are undoubtedly vital, indeed critical to the attainment of long-term Service Oriented Architecture transition projects, there is a lot more that should be taken in to consideration.
While we have discussed in earlier articles how abstraction can be utilized to support the realization of loosely coupled, reusable services, we have to confront the fact that even the services that are most reusable will not be useful if they cannot be found by those who are responsible for the creation of potential clients. What is more, even loosely coupled services will not have a great deal of reuse potential if they are not able to be assembled in to compositions in an effective fashion. Thus, it is vital to take in to consideration the principles of service composition and service discoverability.
Service Autonomy
As businesses continue to step up the process of constructing enterprise automation logic in the service format, there is also an increasing need to step up both the efficiency and reliability that the services are intended to take on at run time. This dire need is increased when it comes time to assemble a service inventory with a vast quantity of reusable services.
Service Optimization
The principle of optimization states that high quality services should always be employed rather than low quality ones.
|