A number of years ago Dion Hinchcliffe wrote on his blog “Is Web 2.0 actually the most massive instance possible of service-oriented architecture, realized on a worldwide scale and sprawling across the Web”.
That statement would indicate that Dion believes that Web 2.0 is a massive instance of SOA. However, before we engage in this discussion we need to agree on what we are talking about. I agree with Bhupinder’s observation that ‘we need to have a clear definition of SOA and Web 2.0’. The problem here is that there are any number of definitions of SOA, and an abundance of definitions/descriptions of what Web 2.0 is and/or means.
From my point of view, Web 2.0 is used to describe the changing trends (evolution) in the development and use of Web technologies. If you agree with that, then definition of Web 2.0 that Tim O’Reilly attempted to ‘clarify’ back in 2005 will be different than ‘the current definitions/descriptions’, and those definitions will be different than the ones that will be in vogue three to five years from now.
Today, when I think about Web 2.0 the following concepts and ideas come to mind (in no particular order of importance):
– Collaboration and utilizing collective intelligence
– Communication and connections
– Virtual communities and worlds
– Tagging of content (folksonomy) and search
– Social software and social media
– Universal (wide spread) access to and ownership of data and information
– RIAs and rich user experiences
– Innovation in assemble – Mashups
– Lightweight programming models and services
– Convergence – device independent access to content
– Decentralization – distribution of content and control throughout the network
I am sure that if you ask ten different people for their definition of Web 2.0 you will get ten [significantly] different lists/descriptions.
With all due respect to Dion (and many other Web 2.0 experts – who have more knowledge and experience that I have) I truly believe that SOA is a different animal. It may be my many years of software development, but I think that SOA is much less of a ‘moving target’ than Web 2.0. And, I think that you can come up with definitions that most people would ‘mostly’ agree with. One definition that I like is: the elements of SOA are generally regarded to be a methodology (set of processes) for system and software architecture & integration where the functionality is organized around a set of business processes or tasks and delivered as a set of services that can be discovered and executed.
One could argue that the (above) definition of SOA is not much different than that of Web 2.0, but I would disagree. The following are characteristics of SOA services that are not always found in Web 2.0 components: service discoverability – services are exposed so that they can be discovered and utilized by other services/components, service autonomy – the service has control over all of the functionality that it provides, and service abstraction/encapsulation – like classes, services do not expose internal logic and functionality.
At a high very level you could think of Web 2.0 as an instance of SOA. However, when you get down into the details of SOA, then it seems to me that one should view SOA as one of a number of methodologies that provides services to support Web 2.0 applications.