By Beth Gold-Bernstein, Chair, ebizQ Virtual Conference Series, ebizQ
To date the majority of focus on service-oriented architecture (SOA) and Web services has been on standards and the technical details of defining interfaces. While a standard interface definition is a critical enabler of SOA, it is only the first step to achieving the full benefits. Increased business agility and decreased costs are dependent upon well-defined, well-managed, reusable services that are fast and easy to connect to. Unfortunately, there is no mathematical theory or methodology that can tell a developer whether the component or service is at the correct level of granularity to maximize reuse. The most commonly used method of creating business services is the trial-and-error approach. This usually means defining services in the context of a particular business process, then revising for reuse in the next solution. This article presents an event-driven approach to designing adaptable and reusable business services.
The primary goal for good service design is that it be reusable and adaptable. If a service is both, then over time it is far more likely to deliver a high ROI through use on subsequent projects. However, when designing a service for the first time, it can be difficult to determine whether a service will accomplish these goals. Here are some guidelines to consider when developing services to maximize reuse.
Services should be standards based. Standards help ensure that services can be flexibly deployed on different platforms, and can be easily accessed from other platforms.
Services should have event driven interfaces. The business service should be initiated by a business event, a system event or a temporal event (something that needs to happen due to time, such as stock market closing, or end of the month event). Similarly, the outputs of the service should be an event which can kick off a process in a workflow. Services which rely on a request/reply model of interaction are less adaptable to change. They also don’t scale as well in high level production environments.
Services should have loose coupling with the presentation layer. Companies need the flexibility to purchase or deploy specific functional components and still present a unified interface to the user. Services that deliver the presentation layer with the back-end functionality inhibit flexibility. They are less reusable in future solutions.
Services should have loose coupling with the persistence layer. Companies need business services that will work with the back end data sources already in place. To maximize business agility and reuse of IT assets, businesses services need to be event driven – not data driven.
Services should have tight cohesion. Business services need clear functional boundaries which do not overlap with other systems, thereby creating redundancy. If the company already has the functionality in place, they should not have to build or purchase it again. Companies that develop highly granular services that can be flexibly combined into higher level business services will reap a higher ROI.
Services should accommodate rules-based processing. To maximize reuse, the business service needs to be customizable for each new solution. The ability to declaratively define business rules is most adaptable to change. The services can be localized more easily and quickly.