Thursday, March 15, 2007

Don't believe the SOA hype, its a sequel

Why I continue to read articles on SOA I don't know, because more often than not the articles bug me. What bugs me? The hype that is whipped up around it.

One common theme around SOA is the benefits from reuse; if you have done something once, why do it again? Sounds logical... at first glance. This is the main driver for the hype; its an easy sell to an executive who doesn't understand technology. Everyone appreciates that doing a job once is cheaper than doing it twice.

However, if only it were that simple. A common mistake is to think that reuse is simple. In fact, with SOA, reuse is doubly hard than something that is commonly reused in IT; the API (application programming interface). How many times has your company produced a common API to be used throughout the organisation only to find barely a handful of projects actually making use of it; most having gone their own way because they found the API difficult to use, or doesn't include a feature they need, or the feature that they do need could be weeks away from being implemented, or that a new version of the API has just been released and they now have to recode their application to be compatible with it, or there are so many versions of the API in use it is difficult to support them all.

SOA is in the same boat as an API and suffers from all the same issues. But, it has an additional complication; whereas each application will have its own copy of an API, there will only be one instance of a SOA service. This causes issues such as competing for the resources of that service instance and that any downtime of the service instance means affecting every dependent application. What if your service is 99% reliable but the application wanting to use it needs 99.99% reliability? What if you need to take the service down for maintenance yet applications dependent upon it don't have the same maintenance window? How are you going to release a new version of the service and migrate existing applications across when the application teams refuse to change because it works perfectly well at the moment?

Well, reuse is certainly possible. We reuse things all the time in our work lives and home lives; but there are a whole bunch of things that we could reuse but we don't because it simply doesn't make sense. The same applies to software, and SOA. Jump in with your eyes wide open!