At a time when big brains start to wonder
what an Enterprise Service Bus (ESB) is all about and have doubts about
the health of Service Oriented Architecture (SOA),
today's post of Uncle Bob is a refreshing pragmatic counterpoint, as we can expect from him.
Of course I can only concur, but I must say that scorning enterprise service buses, as he does, is not necessary (
maybe it is, just for the purpose of counterbalancing vendors who try hard to push expensive ESBs on clients...).
For me, an ESB is a distributed intermediation middleware whose main goals are:
- Facilitating applications interoperability, and
- Reducing applications coupling, and
- Avoiding point to point communication, but also
- Favoring asynchronous messaging and eventing above synchronous remote invocation.
I believe that deploying an ESB does not imply to embrace the full canonical SOA gong show, but can, in fact, be a good occasion for preaching the values I listed above and alleviate the following inevitable traits of a mature software landscape:
- Applications tend to know too much about each other, with integration happening at data level, if not database level, and sometimes happening beyond the enterprise boundaries.
- Applications tend to wait too much for each other, engaging in long chains of synchronous requests while asynchronous messaging could be used to free up threads, hence resources.
- Applications tend to talk too much when they have nothing to say: polling mobilizes resources while efficient, yet simple, notification mechanisms have been around for a while.
As time passes, each change becomes more and more complex and risky, as it is hard to estimate what other application will go bonkers if you dare touching something. Nothing new here: this is just
a macroscopic replay of what happens inside the applications, where components also tend to develop tight coupling.
So an ESB is not a golden hammer but is just
an occasion, a driver, a extra reason for making things better. Presented like this, it is not surprising to find out that anyone who value what they do are willing to ride the bus.