
Rust and RPC at OkCupid - mikeokc
https://tech.okcupid.com/rust-and-rpc-okcupid-hackweek-2017/
======
vitno
This is my project! Ask me any questions if you have them. This was a fun
project to work on.

~~~
steveklabnik
This looks great! I'm psyched you are enjoying Rust.

Once you end up with something in production, if you're interested on being on
[https://www.rust-lang.org/en-US/friends.html](https://www.rust-lang.org/en-
US/friends.html), there's a link at the bottom of the page :)

~~~
vitno
I'd love that. I'll definitely let you all know when that time comes.

~~~
steveklabnik
Awesome. Don't hesitate to reach out if you ever need anything.

------
otterley
Yay XDR! I still haven't heard a good explanation as to why Google invented
Protocol Buffers when XDR already existed and was mature (it powers NFS).

~~~
Zikes
Literally guessing here, but does XDR support backwards compatibility with
updated definitions? Protobufs let you add a property to a definition as long
as it's at the end of the object definition, yet objects encoded in the old
definition can still be decoded with it and vice versa.

------
tveita
> We use XDR - RFC 4506 and RPCv2 - RFC 1831 to communicate between our
> servers.

I see the appeal in using the same format everywhere, but it seems like they'd
have a easier time using something with more mindshare, like Protocol Buffers,
or even Thrift or Cap'n Proto.

All of those have Rust implementations, for instance, so you wouldn't have to
implement your own parser.

~~~
int_handler
Completely agree. I was wondering the same thing as I read this.

~~~
vitno
OkCupid is over a decade old. XDR was pretty good back when people started
writing our services.

My goal here isn't to migrate our RPC system... yet. My goal is to stand up
Rust services in production. I need to be able to issue calls between services
and thus, I need it to speak XDR. Migrating your RPC system in a production
website is a non-trivial task.

I've done some investigation into switching to something like flatbuffers or
cap'n proto. That's a project for another day though.

~~~
int_handler
That makes sense. Thanks for explaining!

