Joe McKendrick has written an interesting post about the analogy of services as Lego blocks that’s often used to describe service oriented architecture (SOA) within the enterprise. He wonders if the analogy of services as Legos within the SOA is an over-simplification of the way things work:
"Is LEGO block-building a valid analogy for SOA application building? I think it very adequately captures the essence of what SOA is about, though it’s understood that SOA building is much more complex. ‘Erector set’ of course may better describe it, because it involves some nut-and-bolts work rather than simply "snapping" components together."
Joe has hit the nail on the head here, although I don’t know if he quite realizes it. The problem is that snapping services together to create new uses works great, except when it doesn’t. The difficulties arise when the SOA’s you’re using to build your spaceship with aren’t built with the same kind of blocks. When you try to plug Marketing’s legos into Finance’s Erector Set, the pieces don’t fit together and you need to start building the nuts and bolts adaptors.
The real underlying issue here is that SOA is so new that every vendor can run off and build a proprietary API and claim to support SOA. The business users grin and drool with anticipation of creating fantastic new mashups. Yes, you can use the SOA to create new applications, but only if the other applications you’re using support the SAME SOA. If one supports REST and the other supports SOAP, or the two applications don’t support the same schema , you need to use duct tape to stick the two SOA’s together. Duct tape = custom development.
SOA is so new that I can’t really see an end to this dilemma until the service architectures are standardized in some way. A standard, open-source schema needs to be created, and I believe we’ll eventually see that happen as open-source applications move into the enterprise. But until that point, don’t expect to be able to plug your Legos into your Erector set and have everything work without some duct tape.