SOA Questions

SOA == WS?

(Which I interpret as “Does SOA mean Web Services”)

Here’s my answer, in part sponsored by inspired by a talk given by Jeff Schneider of Momentum SI

A service oriented architecture is one where the enterprise applications are each carefully designed to offer remote access APIs to do things. For example, we have been joking around our office (we have a black sense of humor) that we need to add a “Fire the guy who signed this contract” button to our contract analysis application.

That button would need to integrate with the customer’s internal business systems to terminate the employee’s employment, and in general it would look something like this:

Contact the security systems and tell them “this employee has been terminated”. The security system would disable keycode access, lock out passwords, etc.

Contact the HR systems and tell them “this employee has been terminated”. The HR system would remove the employee from the insurance plan and send the guy his last check

Contact the Workflow system and tell them “this employee has been terminated”. The Workflow system would redirect all of his current work to other people.

Contact Facilities system and tell them “this employee has been terminated”. Facilities sends Guido with a cardboard box to escort the guy out of the building.

Now, in theory, these remote commands would not have to be SOAP/Web Service based. They could be based on CORBA or RMI, or even Sun RPC (yes, I’m that old). But in practice, the CORBA, RMI and RPC interfaces are much harder to use, much harder to guarantee availability on “platform X”, much harder to debug and much harder to proxy.

Think about that last one. The nice thing about SOAP is that it’s XML, a format that isn’t Big-endian or little-endian. You can have any number of intermediate systems between your “fire that guy” button and the thing that does the work, as you can see in this example.

That would be much harder with a CORBA or RMI implementation. Not impossible, and I’m sure there are systems out there that do this.

But they have never caught the imagination of the worlds IT departments the way a Web-Service based SOA has. And so:

SOA ~= WS

(thats “approximately equal”)Â I think the key difference, and the thing that makes SOA ~= WS is that WS is a format that is easy to use, easy to store, share, debug and record, without having to know nearly so much about the overall system.