John Carney wrote this short post about complexity in the architecture at his workplace.
@johncarneyau: You know your architecture is too complex when your arrows cross over
A little later someone else chimed in:
@tvars: @johncarneyau surely you need an ESB?!?
This was a cruel joke (despite the lack of emoticon) but it did get me thinking – this is a fundamental problem in the ongoing fight against the inappropriate adoption of ESBs. The level of complexity shown on the board in John’s photo can be daunting. When ESB advocates (or vendors) sell bus integration, they can make that diagram look so nicely clean and ordered – with nice square lines that never intersect. Â This appeals to the obsessive compulsive pointy haired boss types. Â The Enterprise Service Bus will guarantee to make your whiteboard diagram 42.4% less complex.
The reality is that the architecture on the whiteboard is relatively simple and consistent compared to most ESB architectures, and an order of magnitude more productive.
Very much the same thought flashed through my mind when @tvars piped up, but I couldn’t think how to compress it down to 140 chars.
It’s actually a very good point – ESBs don’t eliminate the tangle, they just hide it, and in doing so encourage us to ratchet up the complexity. If that diagram above was a plan for something you wanted to build, then you’d be madly trying to consolidate components, or de-scoping, or sacking the person that drew up the plan. With an ESB in the picture you’d be doing the exact opposite.
As far as this specific example is concerned, I think our architecture is more complex than it needs to be and we should be aiming to simplify it, but it’s not an unreasonable level of complexity given that the diagram is a snapshot from a conversation about an constantly evolving ecosystem.
So, I was being a bit tongue in cheek when I posted the shot, but I still think that if you can’t draw your system without having lines crossing over, it’s getting a bit on the complex side.