Wednesday, November 17, 2004
« TheServerSide.NET interview | Main | Thanks on Thanksgiving »

For some time now I’ve been writing relatively cautionary entries on service-orientation. Speculating whether it is really anything new, or is just another communication scheme not unlike RPC, DCOM, RMI and others before. It seems that Grady Booch is of a similar mind, suggesting that SOA is not the be-all-and-end-all of architectures, and that it may not be an architecture at all.

 

In a couple weeks I’m giving the keynote at the Heartland Developer’s Conference in Des Moines. I’ll be talking about service-orientation from a historical perspective. How does it relate and compare to procedural, object-oriented and component-based schemes, as well as client/server and n-tier. In putting together the presentation, I had to formalize a lot of my thoughts on the topic, and the more I’ve considered it, the more skeptical I have become that service-orientation or SOA is a tangibly new thing.

 

If it is tangibly new, then it is a new way of thinking or conceptualizing the problem space, not a new technology solution. Web services, SOAP, XML and related technologies are merely incrementally new twists on very old ideas. In and of themselves they offer nothing terribly new from an architecture perspective.

 

But SOA itself isn’t about technology. It is about a new way of modeling reality. It is very data-centric and thus is diametrically opposed to object-orientation. It is much more similar to the older procedural world-view, where data is passive and procedures are the only active entities in a system.

 

But it isn’t really procedural either, at least not in a traditional sense. This is because procedural design has an underlying assumption that procedure calls are virtually free. In an SO model, service calls have very high overhead – or at least we must assume they do, because that is one possible (and likely) deployment scenario.

 

Ultimately SO appears to be procedural programming, with the addition of high overhead per call (thus forcing serious granularity changes in design) and dynamic negotiation of the communication semantics (protocol, orthogonal services, etc.) – though there’s no real implementation yet of this dynamic negotiation… And even that isn’t really an architecture thing as much as technological coolness.

 

So in the end, SO is procedural programming redux, with the caveat that the procedures are very expensive and should be called rarely. Kinda boring in that light…

 

Or, as I’ll say in my keynote, SO could be emergent (as defined here and here). It could be that the new combination of old concepts and simpler ideas combine to make something new and unexpected. Something that isn’t obvious. Much the same way the simple moves of individual chess pieces combine to create a highly sophisticated whole. The end result is certainly not obvious based on the simplicity of the core rules. And if SO is emergent, then it is far from boring!!

 

Only time will tell. The next decade will be quite interesting in this regard.


Saturday, November 20, 2004 5:40:59 PM (Central Standard Time, UTC-06:00)
I believe many of the early writers are seeing SOA in the procedural programming paradigm, which is a bad way to look at it. I can see much of the MS push sending people in this direction. But, designing software as services does not have to lead one down the procedural programming paradigm if the concept of service is broken down as a means of interfacing software on multiple machines. SOA can also work on a single machine, but setting up heavy weight interfaces is not a wise decision on a small, single box, application.

I see a way to blend OOP and SOA in Enterprise settings, which is where I would focus energy.
Gregory A. Beamer
Monday, November 22, 2004 2:35:46 PM (Central Standard Time, UTC-06:00)
The problem is that SOA isn't defined AS anything. People say it ISN'T procedural, modular, OO, component-oriented, etc. But it is far from clear how it is new or different from those things.

Most notably procedural, since a service is just a collection of (possibly related) procedures...

You can make the "messaging" argument, but that's just a different way of describing the way parameters are marshaled to the procedure - it isn't a fundamental shift.

Of if you buy that messaging IS a fundamental shift, then how is it different from what people have been doing for decades with MQ Series and then MSMQ?
Tuesday, November 30, 2004 12:31:16 PM (Central Standard Time, UTC-06:00)
Is SOA something “new” that supersedes OO concepts (as some from MS and elsewhere are proclaiming), or is it that SOA forces us to throw away our OO concepts due to it’s limitations?

Think about it, SOA can't possibly be, with the current state of technology, Object Oriented. If we want to use SOA (and it’s too compelling not to consider it), we’re forced into the limitation of data messaging and work requests only. OO is not part of SOA because of a technological or standards limitation. SOA is not replacing OO … it just flat can’t tolerate OO right now.

The present roar of SOA exists mainly because of its ability to present us with a straightforward common denominator of interoperability between disparate systems or interoperability between systems that won’t trust each other. Right now, (and who knows, this could change over time) disparate systems (MS, UNIX, Linux, Mac, mainframe OS, etc.) cannot understand data packaged with behaviors (including business rules) that emanate from a foreign type of machine. Raw data can be understood by separate information systems much easier now; and asking a “foreign” machine to do some work can be accomplished much easier now. This is what SOA brings to the table. And it IS quite compelling.

So, time to break out our data flow diagrams of yesteryear (and hey, I do still like them!).

What is different and compelling about SOA are the doors that it swings open regarding interoperability that just was not there a couple years ago without expending a lot of effort. So, if we want that goodness, we have to architect for SOA’s limitations, and it’s these limitations that force us to think a little differently when designing a SOA based set of systems.

So, when I hear people speak out that “OOAD is Dead” (i.e.; from the Microsoft Connected Systems RoadShow, for example) or "OO is done, but not dead" (from Don Box on DotNetRocks episode 89) I chuckle when I know that this is being said due to the current limitations of what SOA can offer today. SOA really makes us jump back in time to skip over a whole span of evolutionary refinement of system design using OO. Maybe SOA will be able to catch up one day down the road when a “new” technological innovation (or just a plain standard) is produced that allows the exchange of data and its related behavior. Then we’ll get to hear all over again that there’s a new compelling thing in town ("SOOA" perhaps?) that you’ll all want to advance toward. ;-)>

Roy
Comments are closed.