Service Oriented Architectures - The Current Elixir

Couple of years ago, XML was being touted as the 'next big thing'. While it has managed to survive the hype and actually deliver something concrete, we are now being bombarded newer buzzwords and acronyms. One such phrase is 'Service-Oriented' architecture.
So, what is it? To put it simply, larger applications are built by utilizing the functionality exposed by 'services'. Webservices is one way of providing the service. Even a decade earlier, plain old RPC (Remote Procedure Calls) was a way to call a well defined service interface in a distributed environment.
Issues with using services:
  • How do I define what is it that I want?
  • How do I find out who provides the service that satisfies my requirements?
    • The above two questions are addressed to an extent by WSDL, UDDI of webservices
  • How do I choose between many services that provide seemingly identical functionality?
  • How can a service provider differentiate their offering by value-added features?
    • The above questions relate to how much 'information' is there versus the 'data'. The number 243-45-2345 could be a Social Security Number. But, we cannot be sure. With XML, this could be represented instead as
      243-45-2345
      But, what does SSN mean? How does it relate to the TIN (Taxpayer Identification Number)? Are they the same?
  • How do we do all this without (much?) human intervention?
In SOA functionality is defined in discrete chunks, thus providing a cleaner interface. This allows for loose-coupling between different parts of the application. The benefit is reuse of the services in a different context with similar requirements.
By itself, this concept is far from new. Your online-ticket booking website, takes a predefined set of parameters (say credit card no, exp. date, date of journey, name, age etc.) and spits out a booking confirmation number. It is not too hard to write code to do it for you on the website. What is interesting with SOA is something else that it promises to offer. The ability to decide *which* service to use. If you needed to buy the book 'The DaVinci Code', you could buy it in many ways. But, you probably have additional ideas. For e.g. the book has been out for long time now, so, maybe you should buy a used copy, or look for a clearance sale.
If your SO application could select the right service for you, that would be better.
Read more on topic at xml.com