A note on distributed computing

A note on distributed computing by Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant (1994).

We argue that objects that interact in a distributed system need to be dealt with in ways that are intrinsically different from objects that interact in a single address space. These differences are required because distributed systems require that the programmer be aware of latency, have a different model of memory access, and take into account issues of concurrency and partial failure.

We look at a number of distributed systems that have attempted to paper over the distinction between local and remote objects, and show that such systems fail to support basic requirements of robustness and reliability. These failures have been masked in the past by the small size of the distributed systems that have been built. In the enterprise-wide distributed systems foreseen in the near future, however, such a masking will be impossible.

We conclude by discussing what is required of both systems-level and application-level programmers and designers if one is to take distribution seriously.

This is a classic.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

This is a classic. Should

This is a classic.

Should it be in the history department then? :-)

Is this a political dissertation?

The authors paper over the usability benefits of a single object representation supporting both local and distributed computation. Such a representation is required because software developers require a uniform, simple programming model.

(Biased writing style taken from the paper itself.)

Probably correct

Empirical evidence from the decline of true distributed object systems like DCOM or CORBA in favor of simpler message passing schemes or custom network protocols like SOAP messages or just [ab]use of HTTP GET would seem to support the authors point. How many people these days think "hmm I need to communicate over a network .... I need DCOM!"

General vs. Specific Issue?

While the point is well-taken (especially by those of us with CORBA experience *cough*), Tim can rightly point out that he has implemented exactly what he describes: an object-oriented programming language with language-level support for replication across a network and a consistent representation for objects, whether local or remote. Anyone playing a game using the Unreal technology is using this distributed object system. So perhaps that's an existence proof that the issues the paper discusses are not essential to distributed objects, but rather accidental to some (many? most?) distributed object systems.

Devil is in the details

Yes, could be. And it's certainly true that it's possible to get a lot better than CORBA/DCOM - maybe somebody somebody will produce such a system that hits the sweet spot. I keep meaning to play with ZeroC ICE as it's supposed to be a lot better.

This is kind of an interest of mine as a year or two ago I worked on reimplementing DCOM (which is probably the most deployed "transparent" OO RPC) for the Wine project and when working with it that closely its obvious design oversights become clear.

That said, there are _so many_ details that bite people using these systems that I do wonder how useful they are in reality. Perhaps they only work in very specific situations where the language, runtime and network characteristics are all known ahead of time (like in Unreal).