Two broad camps are forming (or have already formed) in the information technology community at the moment. On the side of big business and enterprise software we have service-oriented architecture (SOA). On the side of the Internet, democracy and empowering the individual is Web 2.0. Arguments are flying about the differences (or similarities) between the two camps, with pundits claiming everything from differences in the protocols underpinning each approach through to the grand philosophies they espouse. Depending on whom you choose to listen to, Web 2.0 and SOA are either on a collision course, or simply different names for the same thing. I think that they two are complimentary, rather than in conflict, and the businesses that can successfully marry the two will be the real winners.
A lot of the confusion stems from the vague and shifting definitions used for each camp. I think both represent a break with the application centric views of IT that have dominated our thinking until quite recently, but this makes them hard to classify as they represent new approaches to IT and the family of technologies that enable them, rather single technologies. Different people rope in different arguments depending on their viewpoint, creating fuzzy definitions that defy simple categorization. SOA has been described as everything from a new architectural approach that will revolutionize enterprise IT through to simply the next generation of enterprise application integration (EAI). I've even suggested that we could view SOA as a new approach to IT planning, though the best definition I've seen to date is that SOA is simply a more pragmatic approach to IT. On the other hand, Web 2.0 has attracted a level of attention not seen since Timothy Leary told us to turn on, tune in & drop out. With meme maps and manifests, Web 2.0 seems to be setting itself up as the anti-SOA, though it's probably best to characterise it as a group of technologies focused on helping people collaborate online.
Rather than focus on the differences, I think it's more productive to focus on where the two are similar. What SOA and Web 2.0 have in common is that they both represent a similar shift in approach—a break with the technology and application centric practices that we've live with for so long, to focus on how technology is used. Both enable a user centric approach to IT.
Web 2.0 puts the user front and centre, providing us with a suite of tools designed to smooth the flow of information between people. Wikis enable us to create community blackboards where we can share information work together as teams. Blogs enable us to keep each other informed of our activities. Group tagging sites support collaboration by allows people to work together as they map out the Internet. We're even seeing the emergence of identity management sites design to help us manage our identity across the various wikis, blogs, and so on that we use to work with out social network. These collaborative processes are used to manage the compex negotiation and business exception resolution processes that can have a disportionate impact on a company's competative advantage.
SOA takes a similar approach with software from the big end of town. Applications are built around the data they manage and the business processes that stream out from the data. SOA, on the other hand, wants to break IT support into smaller pieces and then align each piece with a distinct business activity or stakeholder. Composite applications are focused on the user, delivering task specific user interfaces that provide users with a single consistent view into enterprise data and functionality, allowing them to focus on the task at hand rather than mediating between siloed applications. Backend services are focused on the business owner or SME, capturing the business logic (rules and processes) they are responsible for in a single place, providing traceability between stakeholder and implemented logic and providing the SME with a real sense of ownership of the delivered solution. And SOA enables a holistic view of business functionality as we string together the individual activities to create processes, the providing end-to-end visibility of a process required by the business owner. SOA promised to deliver a level of efficency, agility and flexability not possible with an application centric approach.
But if SOA and Web 2.0 are so similar, then what makes them different? It seems to me that they both aspire to provide better support for the people who own or interact with the delivered solutions; however they provide this support for different types of information. SOA is built on the structured information that is the foundation of the enterprise, the purchase orders, customer records, invoices, and so on, while Web 2.0 does the same for unstructured information, the instant messages, post-it notes and bookmarks that we all collect and share.
The separation between SOA and Web 2.0 ties back to the idea of creating the intelligent enterprise. All enterprises have collected a huge amount of data, but find it difficult to convert data to information, insight and then intelligence. We can convert data to information with business intelligence solutions, trawling through the data silos to present decision makers with the right information, at the right time to facilitate the best decision. Moving from information to insight and intelligence is more challenging as it relies of people working together, collaborating to solve problems and gain insight.
The separation between information and insight parallels the separation between SOA and Web 2.0. SOA can unlock the data hidden inside application silos, providing us with a clean and consistent view into enterprise data and processes. Integrating Web 2.0 tools and techniques into a SOA allows the users to leverage this data to gain insight and create real business intelligence.
It's not hard to imaging a composite application augmented with wikis, blogs, group tagging and the like, allowing it to support the capture of both structured and unstructured information. A customer management solution could include a wiki to allow users to capture pertinent notes about the customer relationship. It could generate a blog to transmit information on significant customer events directly to the desktop of everyone who interacts with the customer. Or it might allow users to attach tagged links to the customer record indicating useful internal, customer and external resources. And this is just the tip of the iceburg.
Combining the two has the potential to address a wide range of problems that we're seeing in the enterprise. Why is it easier to find internal information (such as white papers) by going outside the organisation and back in through the public web site? How do we capture the tribal knowledge that lives around our existing applications?
Business are, at their heart, groups of people who work together, negotiating and collaborating as they solve problems and share knowledge. Web 2.0 is a family of technologies designed to support this collaboration and negotiation, ensuring that people can work together efficently. Integrating Web 2.0 with SOA ensures that the unstructured information, the information which enables people to work together and which can have a disproportionate impact on a company's competative advantage, is backed up, integrated into each person's day-to-day activities and leveraged.
Rather than arguing that one is better than the other I think that SOA and Web 2.0 are complimentary, and integrating them will allow us to deliver some real business intelligence. Businesses who can successfully marry the two will be the real winners.