Starting a SOA Project? Don't forget the Service Registry!!
In the SOA world, there are several pieces of the architecture which are considered de-facto for an SOA. e.g. Service Bus, BPEL process Manager, Business Activity Monitoring etc. But a key component which is only added as an after-thought in most implementations is the Service Registry.
The reason for Service Registry being ignored is the "start-small" approach that most customer's take with SOA Projects.
In this blog, I want to argue that even with small projects, adding a Service Registry in the architecture has significant benefits with regards to Developer Productivity, Build Quality, Ease of maintenance and Architecture Flexibility.
Oracle Service Registry with its out-of-the-box integration/interfaces with Oracle SOA components is the ideal choice for Oracle SOA Projects.
Any Software project would be using several environments like Build, System Test, Stress Test before moving the code to Production. In each of these environments the Service Endpoints would map to systems/applications pertaining to the particular environment. Thus for migrating code to each environment, there has to be a separate code-base created which needs to be updated manually with Service endpoint information specific to that environment. This is usually achieved using ANT scripts, but is a manual task fraught with errors.
Using the Oracle Service Registry, separate registry instances for each environment can be created and approval workflows to promote services from one environment to the next can be configured. With the Service Registry approach, the only reference embedded in the code is the UDDI Service ID. At runtime, this Service ID would be mapped to the appropriate end point Service based on the Service Registry configuration.
Thus a developer is freed from the task of maintaining multiple code bases and creating ANT scripts for every code promotion exercise thus improving Ease of Maintenance & Developer Productivity.
Another key function of the Oracle Service Registry is its role as a central directory for Enterprise Services. Oracle Service Registry plays an important role in SOA Governance and prevention of Service Sprawl by providing approval workflows for Service Provisioning. This encourages more re-use and less re-invention which has a direct impact on Developer Productivity.
Due to the above zero-code & configuration based approach, human error in moving the code from one environment to the next is also reduced drastically leading to better Build Quality. Feeback on Quality of Service is provided by Oracle Service Registry which aggregates and captures quality of service metrics for the deployed services from the Production runtime.
Because of the extra level of indirection provided by the Service Registry, it becomes easy to achieve location independence for endpoint services. The Oracle Service Registry also enables change to the runtime behaviour of the Application by just changing the Registry configuration thus enhancing the Flexibility of the architecture.
Small SOA Projects will thus benefit greatly from using Oracle Service Registry across their Development, Build, Deployment & Production phases.