In my previous post, I talked about how I feel SOA encourages rigid design. Of course, in some situations, you may not really have a choice. When creating Business-to-Business (B2B) integration, interfaces will naturally be much more rigid. There is no way around it, SOA or SOA-not.
Ian Robinson recently published an article on Martin Fowler’s webpage titled Consumer-Driven Contracts: A Service Evolution Pattern. The article gives some very clever ideas of how to make the consumers drive the service definition instead of doing this on the provider side (this is related to Lean Software Development, by the way). The article also goes through some of the challenges of a contract-oriented interface.
As I said, for B2B integration, contracts may be essential. However, for internal integration in an organisation, it seldom is. When I have the choice, I’d rather not have to incur the cost of developing and maintaining. The cost in time spend on contractual interface is relatively simple, but the cost in lost agility is substantial.