|
Information Technology loves buzz words. These days the hot words are Service Oriented Architecture (SOA) and Web Services. These are hot words because the IT and business community think they can address challenges of agility, cost reduction, deriving business value through technology and IT/business alignment through loose coupling, implementation independence and flexibility (go optimism go!).
The concepts are so hot, every new tech magazine and community discussion talks about them, new SOA and web services books come out every few weeks, all technology vendors offer products and services around them, more and more job descriptions include them as skills requirements and every new job candidate claims to be an expert in them. But, very few can really articulate the difference between SOA and web services. Here is what I think:
SOA is a concept and Web Services implement this concept. SOA is not a tool, technology or a framework. It's guidelines and concepts (developers, it's just fluff without stuff).
SOA recommends the following:
- Expose business functions as services and use one protocol for communication between those services
- A service should have predefined interface so that other services know how to talk to it
- Services should be able to send data back and forth in a universal format
- A consumer service should not depend on the implementation of the provider service
- It should be possible to discover a service and bind to it
These recommendations are important to realize the value proposition of SOA. But how to achieve all this? What universal format to use? How to make services implementation independent? How to describe and invoke a service?
To answer these questions, a bunch of guys (okay, representatives from various companies) formed a group called "Web Services Interoperability Organization or WS-I (why not WS-IO? I don't know). This group decided that we will implement SOA by
- Using Http as the protocol (to piggybank on network communication through TCP/IP)
- Using XML as the universal format for everything (to define service, send data back and forth etc.)
- Use SOAP (xml based specification) for services communication, WSDL to define a service and UDDI to publish a service
So, this is one way to implement SOA. No one stops you from forming SOA Implementation Organization (SIO) and come up with your own implementation but if you are its only member then good luck with the interoperability!
I like to think of SOA and web services as tasty pizza (concept) and Domino's pizza (realization of the concept). So, next time some one asks you about SOA and web services, tell them the difference between concept and its realization.
|