SOA can a service be really autonomous?
A few weeks ago i've subscribed to this weblog about SOA and Indigo. I happen to think that in the future SOA will be big and i might as well start preparing for it. I've subscribed a few weeks ago, but only yesterday managed to read some posts.
I've found this one quite interesting, but this part
" Services are Autonomous: A service should not have hard-dependencies on other services. You should design your Services to be isolated, independent and interchangeable otherwise you'll end up with a closely coupled system that is fragile and overly complex. "
raised my eyebrow.
While this is a nice goal, either i'm missing something, or this goal is not going to happen very often in large systems.
On medium/large distributed systems at one time or another a system is not completely isolated it depends on data stored on another system.
Suppose we have service A which depends on some data stored on service B (a lot of time data is horizontally partitioned).
If we want A to be autonomous what choice do we have?
- Replicate service B data (and logic) into service A storage in order to stay independent? not very smart is it?
- Let the clients orchestrate/compose the calls to service A and service B themselves in order to keep service A autonomous and independent of the data stored in service B? this seems to me going backwards.
I'm i missing something here? or i'm i having some problem understanding one of the 4 pillars of SOA?
While we are on the subject this post SOA Real-World challenges presents some nice targets for SOA cenarios usage.
Any takers?