Tuesday, September 07, 2004

Doing SOA without Web Services? Part II.

William and Rich seem to fall squarely in the Platonic camp [1]. For them, SO is an ideal form of architecture. The “right thing for the customer” is make your designs as close to this ideal as possible, even if there is no known current requirement for all four tenets. This is clearly a mistake. In fact, it’s the same mistake that the OO purists made and the reason that William can rightfully claim that there are no SO systems based on distributed object technology.

If you follow the story arc of OO and distributed systems over the last 10 years or so, you see a very familiar pattern. First, there was the struggle to codify the truth of OO design. Once that was accomplished, OO proponents rigorously applied their dogma to building distributed systems. When these systems failed, the OO proponents looked for deviations from the true doctrines of OO as the cause. Eventually, we came to understand that deviating from OO purism wasn’t necessarily the cause of the failures. In fact, we started to understand that some deviations actually were a good thing. I would say the story arc culminated with the publication of Transactional COM+ by Tim Ewald. That book was the final death blow to the notion of distributed object systems as the ideal way to build distributed applications (although I don’t know if anybody realized it at the time). It took a lot longer than necessary to get to that point (and lots of time, money, and effort was wasted) because the thought leaders in the community were blinded by their adherence to an abstract notion of “architectural correctness” that was in conflict with lots of real-world experience. I say that this is a familiar pattern because anyone with a passing interest in the history of ideas has seen this story play out over and over. The pattern is not inevitable. One reason that the scientific method was developed was to prevent this sort of thing.

I see a real danger of repeating this experience with SO. Right now, we’re in the stage of defining SO. As with any new paradigm, there are the twin dangers of the concept being watered down to the point of meaninglessness or being defined so rigidly that no real system can be described as one (by the way, I’m expressing another Aristotelian notion here, that is, a virtue is the midway point between two vices). I think Will and Rich are falling into the same trap as OO proponents, an excessively rigid definition of the concept. Now, there are many reasons why SO proponents will make this mistake. It’s much easier to see the dangers of having your ideas watered down than it is to see the dangers of strictness when your ideas represent a significant advance in the state of the art (and make no mistake, I believe SO is a fundamental improvement in distributed system design). If the four tenets aren’t perfect, we risk following the same trajectory as the distributed object crowd. Remember, distributed objects were an improvement over raw sockets. They just weren’t perfect.

Unfortunately, to agree with Rich is, in essence, to say that the four tenets represent the complete truth of distributed system design. I mean complete in the sense that they represent both the minimum and maximum qualities of good distributed systems design. As an Aristotelian, I reject the notion of complete truth about such things. As a practical matter, when I design a systems architecture I’m fairly skeptical of spending resources on potential future requirements. I often describe my approach as being similar to the concept of Net Present Value used in financial analysis. A solid system or functional requirement from the customer is evaluated on a cost-benefit basis. A potential requirement’s benefits have to be discounted by the probability of it becoming a real requirement. Rich’s team is building a technology (Indigo) that promises to dramatically lower the cost of implementing SO features and that is a most excellent thing. I do wish they would spend less time denigrating the efforts of folks in the field who don’t have the luxury of the relentless pursuit of perfection. Stop creating articles of faith and give us more evidence from real systems that the qualities described in the four tenets have measurable value.

[1] Your arguments sound to me very much like Plato’s allegory of the cave. You both posit SO as a set of fundamental truths for building distributed applications and actual systems as mere reflections of it. If I’m misconstruing your argument, you should object vehemently, because the history of Western thought is really the story of the triumph of Aristotle’s empirical and teleological approach over Platonic Idealism.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home