Man, oh man, there is a ton of buzz (or is it hot air?) around this TLA. I have been in the software industry as a programmer type for 15 years and have never seen so much marketing hype and confusion around this term. Here is the technical truth.
What is SOA?
SOA is based on a systems environment specifically architected to utilize free standing units of functional code, each of which corresponds to a specific activity.
What is a Service?
A self-describing software component that is accessible over a network and has a published interface that does not require knowledge of the technology used to create and deploy it.
What is a Web Service?
Web services should be seen as the primary delivery model for SOA.
Key Attributes of a SOA
- Network-based architecture
- Standards-based defined architecture (XML, SOAP, WSDL)
- Has discoverable components
- Separates interfaces from functions
- Is a federated services model
- Is architected for reuse
The four tenets of Service Orientation
- Boundaries are explicit
- Services are autonomous
- Services share schemas and contracts, not classes or types
- Compatibility is policy-based
Fact: SOA is a modern type of software architecture design. Thats it! Nothing more, nothing less.
What amazes me is that the SOA hype is pushed by vendors and analysts to mean something (everything!) else other than simply a type of technical software architecture design. I have seen vendors brand their products as SOA products. How can a type of software architecture design be a standalone product? Makes no sense. I have also seen SOA described as a technology. Huh? The whole point around SOA is that it is technology independent.
Further, we have technical people trying to describe SOA to business people. Thats a mistake. How would a business person know anything about modern software architecture design? And why should they care? Business people just want their IT problems solved.
Eventually people will figure out that SOA is yet another TLA buzzword invented by someone, somewhere whose only meaning is simply modern software architecture design baby! Software Architects, including your truly, have been practicing the design of SOAs for some time and as written elsewhere, SOA This, SOA That, SOA What!?!
Thanks to Chris Pels of iDevTech
for the no-nonsense technical definitions (a.k.a. the truth) of a SOA.