By Marco Heerebout. I use this blog with a focus on my profession and related subjects and opinions. I'm active in the field of system development and software engineering, applying and mentoring Agile principles and Scrum, most of the times in a leading role or as Scrum master.

Wednesday, March 4, 2009

SOA and complexity

SOA was the next generation of the modern solutions in IT, right? Yes it is, but why?

SOA is a rather vague architecture of how to create an very manageable, flexible infrastructure for all your current and future applications. But what's the SOA best practice. Ask the big SOA-package providers and they all offer a kind of similar story. It's always easy, connecting applications can be done in a snap and BPM and BAM will make life easier. If you create and follow the right plan and have a clear vision of the measurable goals, then you could get there. I really don't want to sound cynical, but bigger IT systems are complex [period]. And a SOA infrastructure may not pay off for the smaller IT systems. So SOA means complexity!

Complexity is not the same as "impossibly". Manageable complexity is what it's about. Enough cases do exist where the complexity may not be simplified. That's too bad, but make sure it's manageable! Unmanageable complexity results in unexpected problems, misuse and higher costs and may even create business risks.

Lowering the complexity starts with the awareness that SOA is a way to optimize your organization and therefore your business. SOA probably will not pay off if the business won't benefit from it.
(Of course enough people will try to use SOA as a technology replacer, but then the replacement will lower costs and provide new/extra features. I think that the business case will not benefit the business but may lower costs (especially when mutli-vendor middleware is being replaced). This happens of course, but that's not what my current blog story is about!)

So my advise... SOA is not a bad idea but is also not very new. The SOA term, terminology and current open standards provide never seen before integration possibilities (you remember CORBA?).
So.. At least think about the needs, the complexity, the manageability and make sure it's going to deliver value (preferably to the business).