I frequently hear Service-Oriented Architecture (SOA) being tossed around as a buzzword among non-technical customers or program managers with little concern or understanding for what it actually entails (example: “Can I buy a SOA?”). There’s also a lot of misinformation about SOA (example: “Only web apps can use SOA”) and a general lack of understanding for its capabilities (example: “SOA can make your make all of your data work together”).
What are some key facts that you, as someone who understand the technical side of SOA, use to educate program managers on the appropriate use and understanding of SOA? What’s the best way to set the record straight with non-technical folks?
For non technical people I would use the following concept. The whole professional world is service oriented.
youself, you go to the baker.
you go to the doctor.
ask a programmer to do this for
you.
This implies two major advantages:
we all were trying to solve all our
tasks separately.
professionals to communicate with
those, who will solve our task (in
real world such way is money and
business contracts)
In the world of software such architecture is implemented by defining specialized services (applications) which are dedicated to perform specific tasks and by defining protocols, which are solving problem of communications between such applications.
When such architecture is deployed, you get some benefits, which can be also mapped to the real world:
If doctor is unavailable, you cannot
be cured but at least you can get a
cookie from the bakery! In software this means one failed service does not break the whole system.
Usually doctors and bakers do not share the same room and this allows them to operate better. Just like in software you can place each service on its own hardware.
For software world this means, better availability, maintainability, reuse, and reduced costs.
Good luck!