What is Service Oriented Architcture? SOA?

The term Service Oriented Architecture has become one of the hottest “buzzwords” in the past couple of years. Yet, it’s astonishing the number of people I meet that cannot properly define or describe SOA. In the Government Software field, everyone is talking about integrating data sources and collaboration between agencies. The term “SOA” is practically used on every engagement.

There are so many different definitions for SOA and I think most of them are much too specific and rely too much on Web Service/XML technology. For example, JavaWorld defines SOA based services as “self-describing interfaces in platform-independent XML documents” specifically using WSDL technology. This a well written article but I don’t agree with their specific definition of SOA. While Web Services are the most common example of a SOA platform, I do not believe that XML is a requirement to be classified as SOA.

Personally, I think in order for an application to be classified as having a Service Oriented Architecture, it must meet 3 conditions:

– The application must provide a service that is designed to be integrated into more than a single larger application and by itself, the application does not provide significant value

– The application must provide a means of integrating with it that is Platform & Language independent

– The application should not require a 3rd party consumer to install any additional software to use its services

I think most people will agree that a XML Based Web Service that provides Stock Quotes can probably be classified as SOA.

On the other hand a Flash based Application, requires a client to install a Platform specific plugin should disqualify it from SOA classification.

Now, consider a Java Servlet that provides Stock Quotes that’s accessible via simple HTTP POST.  I believe that this can be classified as SOA — but many IT professionals will disagree with me. It meets all 3 criteria that I mentioned above.  I can easily build an application that consumes this service, regardless of Platform or Language.  There is no 3rd party software required to use make a simple HTTP POST or GET request.  Sure – the data that is sent is not in XML format, but HTTP Post is still a universal method of sending data across the web.

I’m not arguing that something like this should be implemented in this fashion, but I think that the SOAP & XML Wrapper around many things is not necessary to provide a “Service.”

What do you consider a SOA? What are some requirements for being “Service Oriented”?