The term SOA (Service Oriented Architecture) has been around for quite a while, and it seems like everyone is using it. But is everyone using it correctly? I guess that is open to debate, but since everyone seems to be using it differently the odds are that enterprise CTOs will have to think through their own use of the term and may need to issue guidance to vendors, integrators and internal staff on how the term is to be used in the enterprise. .
I wondered how many definitions of SOA there are out there today. So I did a Google Search. I wanted to limit my search to only those sites that claim to provide definitions. So I launched a search for "SOA intitle:dictionary "
Of course that search will not give precise results, I thought it would narrow my results down.
Thank goodness I narrowed my results down. I only got 12,300 hits back from that search.
Are there really 12,300 different definitions of SOA? It sure seems like it, and after scrolling through page after page of results from Google I can say that there is not enough precision in the existing definitions.
So, what is a CTO to do? Here are some options:
1) you can accept a definition provided by your favorite integrator,
2) you can accept a definition provided by your favorite vendor,
3) you can pick one of the 12,300 dictionary sites on Google that have an answer, or,
4) you can make up your own.
In my last organization I needed to work with many integrators and many vendors, all of which had their own definition of SOA, and I had to work with many internal government mission partners, all of which used SOA the way they wanted to. So I decided the only real option was to write my own definition. I put the following in my guidance to the enterprise:
"SOA is a design for linking computational resources (principally applications and data) on demand to achieve the desired results for service consumers (which can be end users or other services)."
I was a little worried that there might be something wrong with that definition. Maybe I left something out? Or maybe I said something that would do unintentional damage to the enterprise or some of our projects. So I decided to put that out into the public domain for others to shoot at. I looked up wikipedia and searched for the term SOA.
At the time there was an entry for SOA, but it was small and did not actually have a definition. So I created a section called "SOA Definition" at the SOA stub on Wikipedia and added my definition
Within hours someone had edited the entry to add the OASIS (Organization for the Advancement of Structured Information Standards) definition of SOA, which is:
"A paradigm for organizing and utilizing distributed capabilities
that may be under the control of different ownership domains. It
provides a uniform means to offer, discover, interact with and use
capabilities to produce desired effects consistent with measurable
preconditions and expectations."
I like that definition too, but in my view it is a more technical description that is not always going to be good for the more strategic decision-makers in an enterprise. I've decided to stick with my definition for everyday use, but to fall back to the OASIS one if I need to have a technical discussion.