forty years of pretending - goto conferencegotocon.com/dl/goto-chicago-2014/slides/reiddraper... ·...
TRANSCRIPT
![Page 1: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/1.jpg)
Forty Years of Pretending
@reiddraper
![Page 2: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/2.jpg)
About me
![Page 3: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/3.jpg)
Eng. @ Basho@reiddraper
![Page 4: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/4.jpg)
Nobody ever got fired for making an RPC call
![Page 5: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/5.jpg)
RPC claims transparency between local and remote
procedure calls
![Page 6: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/6.jpg)
This abstraction fails
![Page 7: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/7.jpg)
Even a simple web app is a distributed system
![Page 8: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/8.jpg)
A resurgence with Javascript
![Page 9: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/9.jpg)
RPC
![Page 10: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/10.jpg)
History
![Page 11: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/11.jpg)
Pretending
![Page 12: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/12.jpg)
Today
![Page 13: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/13.jpg)
Tomorrow?
![Page 14: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/14.jpg)
RPC
![Page 15: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/15.jpg)
Remote Procedure Call
![Page 16: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/16.jpg)
[…] RPC mechanism is one in which local procedures
and remote procedures are (effectively) indistinguishable to
the programmer. - Nelson
![Page 17: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/17.jpg)
[…] the calling environment is suspended, the parameters are passed across the network to the
environment where the procedure is to execute […], and the desired procedure is executed there. […] the
results are passed backed to the calling environment, where
execution resumes as if returning from a simple single-machine call
- Nelson
![Page 18: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/18.jpg)
A synchronous network call does not make RPC
![Page 19: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/19.jpg)
send(2) is not an RPC call
![Page 20: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/20.jpg)
transparency between local and remote procedure calls
![Page 21: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/21.jpg)
Motivation for RPC
![Page 22: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/22.jpg)
Distributed systems are hard
![Page 23: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/23.jpg)
The procedure call is familiar
![Page 24: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/24.jpg)
Let's lift distributed programming to
the procedure call abstraction
![Page 25: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/25.jpg)
Let's lift distributed programming to the method call
abstraction
![Page 26: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/26.jpg)
Let's lift distributed programming to the function call
abstraction
![Page 27: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/27.jpg)
History
![Page 28: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/28.jpg)
Telnet
![Page 29: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/29.jpg)
RFC 674 1974
Postel and White
![Page 30: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/30.jpg)
Procedure Call Protocol
![Page 31: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/31.jpg)
RFC 707 1976 White
![Page 32: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/32.jpg)
Remote Procedure Call
![Page 33: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/33.jpg)
The principal goal of all resource-sharing computer networks,
including the now international ARPA Network (the ARPANET), is to
usefully interconnect geographically distributed hardware, software,
and human resources
- White
![Page 34: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/34.jpg)
It forces upon the user all of the trappings of the
resource's own system.
- White
![Page 35: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/35.jpg)
It provides no basis for bootstrapping new composite resources from existing
ones.- White
![Page 36: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/36.jpg)
1970
20141974
1976
1981
1984
1991
1995
1998
2003
RFC 674
RFC 707
Xerox Remote Procedure Call
Implementing Remote Procedure Calls
CORBA v1
RFC 1831
XML-RPC
SOAP
![Page 37: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/37.jpg)
An alternative history
![Page 38: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/38.jpg)
The Actor Model 1973 Hewitt
![Page 39: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/39.jpg)
RFC 684 1975
Schantz
![Page 40: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/40.jpg)
[…] objection to the"PCP philosophy"
- Schantz
![Page 41: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/41.jpg)
RPC blurs the line between local (cheap)
and remote (expensive)
![Page 42: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/42.jpg)
RPC blurs the line between local (cheap)
and remote (expensive)
![Page 43: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/43.jpg)
[…] a model which relies on procedure calling for its basis does not take into account the special
nature of the network environment
- Schantz
![Page 44: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/44.jpg)
[…] and that such an environment can be more
suitably handled in a message passing model.
- Schantz
![Page 45: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/45.jpg)
Goes on…
![Page 46: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/46.jpg)
A Critique of the Remote Procedure Call Paradigm
1988 Tanenbaum
van Renesse
![Page 47: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/47.jpg)
Implementing Distributed Systems Using Linear Naming
1993 Bawden
![Page 48: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/48.jpg)
RFC 2616 (HTTP 1.1)
1999 Fielding et al.
![Page 49: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/49.jpg)
REST 2000
Fielding
![Page 50: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/50.jpg)
Problems with RPC
![Page 51: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/51.jpg)
Consistent code
![Page 52: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/52.jpg)
![Page 53: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/53.jpg)
How do you atomically update the code?
![Page 54: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/54.jpg)
Handling failure
![Page 55: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/55.jpg)
What if the remote node never responds?
![Page 56: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/56.jpg)
Or the underlying TCP connection is closed?
![Page 57: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/57.jpg)
Did it fail halfway through?
![Page 58: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/58.jpg)
Did it fail right before it returned to us?
![Page 59: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/59.jpg)
Why don't we have a stacktrace?
![Page 60: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/60.jpg)
What if our procedure made another RPC call?
![Page 61: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/61.jpg)
Serializing values
![Page 62: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/62.jpg)
How do you serialize a file-
descriptor?
![Page 63: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/63.jpg)
How do you serialize a database
connection?
![Page 64: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/64.jpg)
The streaming problem
![Page 65: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/65.jpg)
Can we start processing partial results?
![Page 66: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/66.jpg)
The continuation problem
![Page 67: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/67.jpg)
The procedure call only models A->B->A communication
![Page 68: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/68.jpg)
(8) Fallacies of Distributed Computing
![Page 69: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/69.jpg)
Fallacies of Distributed Computing
![Page 70: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/70.jpg)
1. The network is reliable
![Page 71: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/71.jpg)
2. Latency is zero
![Page 72: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/72.jpg)
3. Bandwidth is infinite
![Page 73: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/73.jpg)
4. The network is secure
![Page 74: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/74.jpg)
5. Topology doesn't change
![Page 75: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/75.jpg)
6. There is one administrator
![Page 76: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/76.jpg)
7. Transport cost is zero
![Page 77: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/77.jpg)
8. The network is homogeneous
![Page 78: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/78.jpg)
Today
![Page 79: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/79.jpg)
Javascript and compile-to-Javascript
![Page 80: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/80.jpg)
Code sharing!
![Page 81: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/81.jpg)
Coupling
![Page 82: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/82.jpg)
![Page 83: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/83.jpg)
Even a simple web app is a distributed system
![Page 84: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/84.jpg)
meteor.js derby yesod-fay shoreleave hapstack dnode
now.js nodejs-light_rpc
![Page 85: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/85.jpg)
Tomorrow
![Page 86: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/86.jpg)
The principal goal of all resource-sharing computer networks,
including the now international ARPA Network (the ARPANET), is to
usefully interconnect geographically distributed hardware, software,
and human resources
- White
![Page 87: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/87.jpg)
Distributed systems are still hard
![Page 88: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/88.jpg)
Implementing Distributed Systems Using Linear Naming
1993 Bawden
![Page 89: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/89.jpg)
Bloom (UC Berkeley)
![Page 90: Forty Years of Pretending - GOTO Conferencegotocon.com/dl/goto-chicago-2014/slides/ReidDraper... · meteor.js derby yesod-fay shoreleave hapstack dnode now.js nodejs-light_rpc . Tomorrow](https://reader033.vdocument.in/reader033/viewer/2022060421/5f17e7de035fac03520dea44/html5/thumbnails/90.jpg)
Questions@reiddraper