I stumbled upon this excellent short white paper from PolarLake. The paper lays out “Seven Principles of SOA Success“. To summarizes the unamed author list these principles:
- Minimize costs of disruption.
- Integrate incremenatally.
- Reduce coding.
- Use industry standards whenever possible.
- Accept the things you cannot change.
- Understand the strategic value.
- Buy – don’t build.
It’s a pragmatic whitepaper that’s worth a quick read. Too many integrations projects fail because of the desire for perfection. A drive towards perfections leads to idealism and creates vision that can easily become unrealistic. That is the crux of the problem, the person that can envision the ideal world is in many cases the person who cannot see reality.
This reminds of an entry I wrote “Ten Fallacies of Software Analysis and Design“. Where I outlined several intellectual sink holes which many developers are victim to:
- You can trust everyone
- Universal agreement is possible
- A perfect model of the real world can be created
- Change can be avoided
- Time doesn’t exist
- Everyone can respond immediately
- Concurrency can be abstracted away
- Side effects and non-linearity should be removed
- Systems can be proven to be correct
- Implementation details can be hidden
Now with armed with this knowledge, I hereby present the 10 Commandments for SOA1 Salvation:
- Thou shalt not disrupt the legacy system.
- Thou shalt avoid massive overhauls. Honor incremental partial solutions instead.
- Thou shalt worship configuration over customization.
- Thou shalt not re-invent the wheel.
- Thou shalt not fix what is not broken.
- Thou shalt intercept or adapt rather than re-write.
- Thou shalt build federations before attempting any integration.
- Thou shalt prefer simple recovery over complex prevention.
- Thou shalt avoid gratuitously complex standards.
- Thou shalt create an architecture of participation. The social aspects of successful SOA tends to dominate the techinical aspects.
1. SOA is a nebulous term and too easily overloaded. I use it here in the sense of a legacy re-engineering project who’s goal is to migrate to a more adaptive and flexible architecture.