SOA Myth and Mystery

A few home-truths toward avoiding service oriented anarchy

By Julian Browne on September 19, 2007. Filed Under architecture, development, governance

Update of original essay from May 14, 2007.

Service-orientation is a good, but old, idea and the benefits it heralds are great indeed. Like all bandwagons that have come before, it's attracted more than its fair share of misinformation, consultant-speak, and myth. Search for the one true definition on Google and you'll find plenty, walk into any corporate strategy meeting and they'll be working themselves up into a frenzy over it, ask a consultant for advice on it and they'll look surprised that you aren't already doing it. SOA is the must-have accessory for software success.

I've now "done" SOA for four different organisations. In the early days there was a lot more debate about its relevance and usefulness, yet now it seems everybody is an expert. But where are the success stories? How come businesses aren't talking about it more? As one recent post asked:

If SOA is about the business, why hasn't it ever been mentioned in Fortune magazine?

Here's what I hope is a useful summary of the state of the art. My best advice, from bitter experience, is this: take your time to get it right, your success measures will be specific to you, and set by your customers, not vendors or consultants. Be open to the idea that you may not even need it, and don't lose focus on the many other spinning plates that make up a 'good architecture'.

A Quick SOA History

The momentum behind what's now called the Service Oriented Architecture (SOA) arose from frustrations with Enterprise Application Integration (EAI), although the basic idea of SOA has been around much longer. EAI, which become popular in the late 1990s, centred on creating 'adaptors' to bridge the gaps between a central message bus and the various connected enterprise applications and data stores. The EAI promise of loose coupling (an important architectural concept that means changes in one area do not require changes elsewhere) was somewhat watered down by the complexity of code required to manage individual adaptors, and the proliferation of adaptors across the IT landscape.

SOA takes a different approach, suggesting that rather than pass data back and forth across a central integration zone through adaptors, each application (or applications) should provide 'services' to the rest of the world. These services should be made available to other applications in a way that loosely-couples the consumer and provider of the service.

The industry excitement about SOA is driven by the fact that services are intended to be business-aligned, so not only should it address some of the integration issues uncovered by large-scale EAI projects, it should also bring the business and IT closer together. That's important because the more parity there is between the business and software operating models, the less likely it is that small business changes will require expensive and time consuming changes to the supporting software.

No specific software is required to deploy an SOA, it's a design concept not a product, but certainly the software that underpins it must support the creation of services, a repository to manage them, a registry for other applications to find them, and a mechanism for service consumers and providers to exchange business information.

But critically, overarching all of this must be a governance process that ensures business services really are business services, as it's very easy to create services that are anything but (and non-business services are not useful in an SOA context, as described in the next section). So SOA is not a silver bullet, and all the other aspects of good architecture must be in place to make it work. If these architecture basics are not in place, then they must be implemented and institutionalised first, otherwise any SOA initiatives will fail.

SOA in Practice

SOA is defined by providers, services, and consumers. A consumer looks for, and discovers, the service it is looking for in a registry. The registry holds enough information to tell the consumer how to find the service and also how that service will operate (a service contract). Armed with this information, the consumer can then efficiently exchange information with the provider without knowing any more details about which applications, data bases, business rules, workflow, etc are involved in providing that service.

If the service granularity (the amount of work the service will do, and the consequent information it requires to do it) is set correctly then a service will become useful over and over to multiple applications and solutions. When there are lots of useful services available, new functionality can be provided simply by calling a sequence of services, with very little new code written. This is the ultimate promise of SOA and is called the Composite Application.

Despite a good story though, achieving anything like an SOA is very difficult indeed. Most SOA programmes fail, very few composite applications exist, and some companies that have tried it have only made their confused EAI pictures more confusing.

Some SOA Myths

Some SOA Golden Rules

Like so much in software, we are hampered by the term more than the idea. SOA seems to have made it much further up the management line than other fads and, as a consequence, is going to be much harder to do sensibly. We're only just getting to grips with all the bad decisions made around EAI in the early twenty-first century, so the more common sense that can be brought to bear on this right now the better.