In two recent posts, What is SOA? and SO != WS, Rich Turner argues that SOA is something more abstract than Web services, but that the easiest way to build SOA systems today is to use Web services. He also wants to drop the ‘A’ from SOA, leaving us with Service Orientation.
I’m trying to make up my mind by starting with some of my own personal definitions:
SO, Service Orientation, is an abstract methodology where Services play a central role. (I’m aware that this is extremely abstract.)
SOD, Service Oriented Development, is SO applied to the development of new applications, usually within your control, where you can and do apply sound principles like Clemens Vasters’s PEACE.
SOA, Service Oriented Architecture, is an what you get when you apply SO principles on an enterprise scale, with numerous compromises because you are essentially integrating systems, not developing them from scratch. (For example, let’s say you encapsulate an existing system’s functionality with a set of services. How can you make sure that they are autonomous (the ‘A’ in ‘PEACE’?))
SOD and SOA have a lot of overlap, roughly similar to the fact that an application’s microflow (the sequence of an application’s dialogues and actions) is technically similar, but not equivalent to an overall workflow (multiple applications used to support activities). The more we can re-use for both, the better; but at the moment, trying to apply the exact same set of principles to both is not likely to work.
As to the Web services != SOA debate, I basically agree with Radovan (if I read him correctly) — this is a very academic discussion not likely to provide much value in the real world.