Posted in Architecture
To begin with an antipodean image, using a service-oriented architecture, when it works out, can be as elegant and exhilarating as surfing on a 10 meter wave, exploiting huge uncontrollable forces to move forward at great speed. However, unfortunately, and maybe much like in the surfing world, the SOA wave often mercilessly rolls over a hapless development team, leaving them confused and wondering whether to give up on the idea or to paddle out again.
Despite its complexity a service-oriented architecture is high on almost every project's wish list. I have been involved in eight projects over the last year, sometimes directly delivering working software, sometimes reviewing or advising, and out of these eight projects six were, according to the respective architects, building a system with a service-oriented architecture. On these projects I have come across two recurring uses of language around SOA that I found noteworthy.
Firstly, SOA used to, and still should, stand for an architecture that is service-oriented, with "architecture" being the noun. What I have found, though, is that more and more often people use "SOA" as an adjective and then add it to a more or less random noun, such as "approach" or "model" or even "architecture" again. Yes, I have heard people talk about an SOA Architecuture more than once.
This use of language highlights a problem. Sticking the three letters "SOA" onto a random noun, without pronouncing what the letters stand for, makes it easy to forget what this was all about in the first place. In fact, it seems that "SOA" is now put in front of words such as "approach" simply to make something sound contemporary; as in: "How's your project?" — "Oh, we follow an SOA approach." Given my experience, chances are that the project's architecture is not service-oriented. It might use WS-* standards, though.
Secondly, there are people who are referred to as SOA professionals or similar. It usually sounds like it's their job to build SOAs. But what does that really mean? Shouldn't developers built software according to a service-oriented architecture? Are the SOA professionals merely advising teams on how to build service-oriented architectures correctly?
In my experience the SOA professionals have a different agenda, and that is to sell SOA. Unfortunately, in the words of my colleague Jim Webber, there are two things money can't buy: love and an SOA. Again, using the three letters one might think "why not?" but spelled out, would anybody argue you can buy a service-oriented architecture? Or any architecture for that matter? So, what is really being sold is usually a set of products, software and/or hardware, that may or may not help a team implement a service-oriented architecture.
The key problem in this case is that when you "buy SOA" the success criteria shift. It seems that success is defined based on whether something that can be labelled "SOA" is in place, and not whether actual business value is delivered. What is often completely forgotten is an evaluation of the suitability of the architecture, but that's a topic for another post.