One of the beauties of Web 2.0 software is its viral, engaging nature. If the software does something useful, has valuable data, or an interesting community, the word will spread and it will be used. Or at least the good parts of it will be. There are specific reasons why this is that I'll go into in a moment. Unfortunately, being viral or engaging is the one thing that enterprise systems, particularly SOAs, invariably aren't, yet need to be in the worst way. Reaching critical mass and gaining enough user adoption to get a return on the investment is a challenge that all too many SOA and EAI efforts face.
I was reminded of this recently as I came across Steve Vinoski's informative, if slightly off-the-mark, article recently in IEEE Internet Computing. Titled The Social Side of Services, the otherwise gifted Vinoski (whom I respect enormously), wrote the following:
Unfortunately, being viral or engaging is the one thing that enterprise systems, particularly SOAs, invariably aren't, yet need to be in the worst way.
Regardless of your position in the organization, the key to promoting SOA’s adoption is communication. Essentially, you have to employ marketing and sales tactics to socialize your ideas and win over the key people who can help make your dreams a reality.
Two relatively modern ways to socialize service-oriented approaches within your organization are to employ wikis and weblogs. According to Wikipedia (itself, a wiki), a wiki is “a type of Web site that allows users to easily add and edit content and is especially suited for collaborative authoring,” whereas a weblog or blog is “an online publication with regular posts, presented in reverse chronological order.” Both are powerful Web-based socialization tools that can help you build the shared vision needed for SOA to take root.
Vinoski is recommending social approaches to selling and marketing a SOA internally, yet not addressing the core problems that hinder adoption. He does highlight the usual suspects: not be aligned to the business or failing to have a registry, two classic solutions that many would agree don't help solve the problem when stated this way. I would note that Web 2.0 services get found, adopted, and reused on a massive scale without a formal registry (and no, Programmable Web doesn't count, it's just a directory.) As for aligning with the business, the only way to stay in business on the Web is to offer services of clear value, definitely tough but it does seem to get figured out when survival matters.
But this all highlights one of the bigger differences between traditional IT and the remix culture of Web 2.0. For one thing, most SOAs actually have relatively little competition inside a given organization. Sure, some services could be obtained from other departments or from an outside supplier, but in reality there's little other choice most of the time. Yet, despite having no place to go, many SOA and EAI projects still fail to get engagement from their internal customers, despite the socialization and communication that Vinoski claims is key to adoption. They just don't want it or they can't use it.
Though some resistance to adoption of software and services can always be chalked up to the infernal political boundaries that trip up so many large scale projects (or the oft-present not-invented-here syndrome), the reality is usually more prosaic. Web 2.0 approaches to service design dictate an almost extreme preference for encouraging unintended uses, not controlling the other side of the conversation (no SOAP), provide small pieces, loosely joined, and extremely simple data payloads, often microformats and JSON. Unfortunately, SOA and EAI technologies actively tend to not encourage these things. The result is, as I've said many times in the past, is software that is actually extremely hard to mesh together. Unless the developer toolkits match up closely, the large, ungainly pieces can be made to fit right, and the performance is there (guess what, simpler is faster too), folks just can't use what you provide.
What I don't want to convey is that socializing SOA is undesirable or unimportant, far from it. But it's not the first order of business or the most important aspect of adoption. In fact, if you look at the cutthroat competition for reusable services on the Web, you'll find that if you can provide a great service with useful information in a way that people can use, they will beat a path to your door. And perhaps that's yet another thing that's different between Web 2.0 and most SOA initiatives; there's little competition for the customer and as a result perhaps no real incentive to be great.
Why do you think SOA adoption is notoriously difficult?