I sometimes think a better expansion of the abbreviation might be “Everyone’s Silver Bullet”, such is the perception that all you need to buy is an ESB and all your problems are solved.
I have long promoted the view that an ESB isn't a product as such, but a set of capabilities that you might assemble from various sources - either upgrading existing infrastructure, buying new components, or even building some yourself. Some of the capabilities might be embedded in the operating platform you use, or looking forward, you might consider some cloud-based ESB capabilities too.
This debate promted me to create the following extract from a report I authored some time ago, but which still seems as relevant today as it did then.
The role of SOA Middleware
SOA middleware may seem an oxymoron. SOA is meant to free organizations from the tyranny of tightly coupled implementations, which in my mind includes creating dependences on middleware, not just application and platform-level dependencies.
With support for Web Service protocols embedded in the Application Servers, and WS-STAR providing support for federated, secure, reliable, transactions between endpoints, why should there be a need for additional middleware?
The reality is that existing benefits of a middleware approach still largely applies. SOA middleware can be used to:
- Separate concerns – remove middleware capability such as messaging and mediation away from applications. Though a modern platform can also assist in achieving this, such as Microsoft Windows Communications Framework (WCF)
- Support Heterogeneity – separate capability away from OS/Platform specific functions
- Provide a more agile environment where changes to infrastructure do not impact applications, or vice versa
- Form part of a shared enterprise SOA infrastructure, rather than embedded in or specific to each application solution
- Manage by policy, and manage centrally. It is easier to deploy and enforce policies through a layer of SOA infrastructure designed for this purpose.
- Web Services are not the only protocol. Even when they do become widely used, most organizations will continue to use the existing middleware and other protocols already in use for some time. Hence SOA middleware often provides support for other protocols.
However, it is not as straightforward as depending on existing infrastructure. Although not an immediate concern for some organizations, SOA will place new demands on infrastructure capability that the existing infrastructure cannot so easily support. Longer term, the SOA infrastructure must itself become Service-based and able to be virtualized in the same way that is required of business capability. Even in the near term, organizations can gain advantage from using a networked approach to some SOA middleware requirements rather than using a hub and spoke approach that frequently exists today. Longer term, the federated SOA will make this a requirement.
The ESB Spectrum
In earlier reports in our CBDI Journal I identified that there was no commonly agreed definition of an ESB, or a set list of functionality one might expect to find. Consequently, so called ESB products offer a spectrum of capability as shown in the table below.
The ESB Spectrum |
A well formed ESB can help organizations by providing the core mechanism to deliver SOA run-time agility. The role of ESB includes;
- Providing the mediation layer between service consumers and providers to enable loose coupling
- Abstract hard coded transformation and routing of messages away from service consumers and providing resources – making the SOA easier to maintain, manage
- Provide a central point of control for mediation and integration policy enforcement
- Host Services within the SOA itself
- Depending on the ESB implementation
- Provide declarative approach to defining mediations
- Provide dynamic mediation
- Provide policy driven mediation
- Provide mediation based on current and emerging open standards such as WS-protocols, WSBPEL, JMS, JBI
- Provide on/off ramps for multiple transport and message types
- Orchestration of Services
Consequently, the selection and adoption of SOA infrastructure should be carefully managed. You could assemble it yourself, but it may still be more expedient to acquire a product containing the required capability, and hence delegate the ongoing support to the vendor. If cost of aquisition is an issue in these lean times, then there are several excellent open-source ESBs available.
No comments:
Post a Comment