How to get up to speed on SOA?

People can't agree on what SOA actually means.

http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html

(although consensus may have grown since that was written)

I suggest quizzing your client to find out exactly what they mean - if anything. Then give them something that actually provides business value, while ticking any SOA boxes that might coincide with that effort.


Pitfalls

  • Versioning/backwards compatibility: it gets really hard to change a contract once you have loads of clients. I have seen many sites version the APIs by introducing the version in the URL

Granularity

  • Each service should be reasonly self-contained (don't expect people to do 3 calls before they get what they need)

Platform Independence

  • Try to give more than one way of accessing your APIs (WS, JSON, REST...)

Call me a SOA-skeptic. Fowler's lament still seems right on.

I would focus on the more general problem: your client has 2 or more applications that have to collaborate together. Look at old school integration patterns.

EIP image
(source: amazon.com)


Found this IBM Redbook (#sg246303) which is quite a good introduction to the basics of SOA.