20 Nov ESB = Erroneous Spaghetti Box?
While re-reading the Microservices article by Martin Fowler, I was triggered by the following footnote #7: We can’t resist mentioning Jim Webber’s statement that ESB stands for “Egregious Spaghetti Box”. I viewed the presentation – from 2008 – in which Jim Webber and Martin Fowler bash the Enterprise Service Bus and translate the acronym ESB into Erroneous Spaghetti Box.
I do agree that often, the integration platform simply contains a spaghetti of point-2-point integrations. But that’s good! Way better than all that integration logic dispersed over many systems. With a wide variety of integration techniques, protocols and message formats. And spaghetti in a box is exactly what I tell when explaining what an integration platform is. Only by taking the next step of careful service and message design, one can arrive at a true Service Oriented Architecture.
Let’s sum up the main advantages of an integration platform:
- A standardized way to have applications talk to one another
- No coding in a 3GL such as Java or C# but configuration in an application specifically built for the task of integrating systems
- Support for applications of different kinds and ages, including packaged applications
- Strongly reduced diversity in the tools and techniques used to integrate applications
- Support for reliable, asynchronous communication using queuing and message persistence (which Fowler doesn’t seem to like either)
- Trivial connectivity through adapters
- Central place to monitor and manage the communication between systems, in particular the reliable message exchange
- Help turn packaged or older applications into services if desired (not everything is developed in-house)
With the disadvantages:
- That it is a central, separate platform,
- Requiring some specific skills (XML)
- The cost of the integration development and support becoming truly visible.
Where Webber and Fowler do have a point, is that middleware vendors come with a whole slew of products. Obviously one should only pick the parts that are useful. And the ESB will definitely not create the Service Oriented Architecture for you.