?

Log in

No account? Create an account

Previous Entry | Next Entry

RPC considered harmful

[T]he fundamental problem is that RPC [Remote Procedure Call] tries to make a distributed invocation look like a local one. This can't work because the failure modes in distributed systems are quite different from those in local systems, so you find yourself having to introduce more and more infrastructure that tries to hide all the hard details and problems that lurk beneath. That's how we got Apollo NCS and Sun RPC and DCE and CORBA and DSOM and DCOM and EJB and SOAP and JAX-RPC, to name a few off the top of my head, each better than what came before in some ways but worse in other ways, especially footprint and complexity. But it's all for naught because no amount of infrastructure can ever hide those problems of distribution. Network partitions are real, timeouts are real, remote host and service crashes are real, the need for piecemeal system upgrade and handling version differences between systems is real, etc. The distributed systems programmer *must* deal with these and other issues because they affect different applications very differently; no amount of hiding or abstraction can make these problems disappear.
- Steve Vinoski
http://erlang.org/pipermail/erlang-questions/2008-May/035207.html

"The layers of complexity required to maintain the resulting leaky illusion of local/remote transparency are reminiscent of the convoluted equations that pre-Copernican astronomers used to explain how the Sun and other planets revolved around the Earth."

- Steve Vinoski (from "Serendipitous Reuse" http://dsonline.computer.org/portal/pages/dsonline/2008/02/w1tow.html)

also in the above post
http://beepcore.org/
the peer to peer protocol...