Do I need an ESB to do SOA?
The short answer is no. While an ESB (Enterprise Service Bus) adds significant value, there exists no direct technical reason that you need an ESB.
Perhaps a more pertinent question should be: Should I use an ESB in my Service Oriented Architecture?
ESBs have come a long way over the years driven by many factors including the increasing adoption of SOA and the resulting maturity of relevant standards. Most ESBs started as simple message based integration solutions, providing the means to integrate heterogeneous applications in a consistent manner. The bulk of the major ESB products have their roots in message oriented integration solutions.
Searching the Blogosphere there is an incredible amount of vitriol around ESBs. Much of it seems to me to be an emotional reaction to poor implementations. Personally, I blame the vendors who promise the world and deliver very little, often hijacking your architecture by attempting to fit it to their view of the world.
The fact is that you can implement a “pure SOA” without an ESB. But somewhere in the mix you actually do need real technology. The SOA space is new(ish) and the technologies are still maturing and converging on standards, which themselves are maturing.
There does not even seem to be standard definition of what constitutes an ESB. What does seem to be common amongst the products offered by the industry leaders includes:
- Sophisticated messaging; Most ESBs have their roots in messaging so it’s no surprise that this is both common and a strength. You typically find both point-to-point and publish-subscribe supported. What varies a lot are the capabilities of the management tools, especially in the management of subscriptions and routing.
- Support for Web Services; This has become universal – most ESBs provide “out of the box” web service technologies for wrapping existing functionality as web services.
- Business Process Orchestration; SOA only really begins to add value when services are course grained and business oriented. Business processes cut across business silos, so the use of BPM tools is a natural approach to driving out business services.
- Mediation; Normally this is provided through so-called adapters. Adapters provide a means of accessing data and functionality in a variety of legacy applications. These range from basic file access, to sophisticated application specific API level access (think SAP etc).
- Service Orchestration; Often referred to as service composition, this is a means to combine multiple services into a single logical service without writing any code.
- Routing; Often part of messaging, it can also play at the service level in terms of service virtualization. Routing can be static or dynamic based on content and other criteria.
- Management; Monitoring, auditing, control, admin etc. This adds significant value from an operational perspective.
What this list represents, is mostly plumbing. Depending on what technologies your organisation uses you should already have some plumbing for creating services. What an ESB gives you is a coherent plumbing toolbox that frees you from needing to concentrate on too much technical stuff.
An ESB is not a silver bullet. In fact I would go so far as to say that silver bullets (of the software kind) do not exist. An ESB will add a number of useful tools to your toolbox, but you will still have to do a lot of work to get your SOA in place. Simply buying and deploying an ESB does not mean that you suddenly have a SOA. In fact, this approach is likely to lead you toward what’s become known as an ESB Oriented Architecture. This has common elements with a SOA, but is not a SOA and will not give you the same benefits. What you will have is an integration platform and not much else.
SOA is a mindset, not a technology stack. Be wary of ESB vendors who come armed with a so-called reference architecture. Architectures must be designed to fit your specific needs. There are many common SOA patterns that will apply in many different organizations, but the way in which they are applied and combined tends to be unique.
When embarking on your SOA implementation, first work out what your architecture should look like (your to be view of the world). Then sit down and evaluate which technologies you need to implement your vision. From this you can decide which ESB (if any) provides the best out of the box fit. There will probably be gaps. Look for products that plug these gaps, or be prepared to plug them yourself (as a last resort). Do not let an ESB vendor highjack your SOA. Make them fit their product to your vision, not the other way around.
So let’s restate the original question as: ‘Can you implement your SOA without an ESB?’ The answer of course is: ‘Yes’. Should you implement your SOA without an ESB? ‘Probably not’.
