BERT and Ernie: Scaling your Ruby site with Erlang 4.24 http://spkr8.com/t/1793

Description:

GitHub had a problem. I needed a fast, robust way for one Ruby process to make low-latency calls to another. I looked at Thrift and Protocol Buffers, but those solutions were too complex and not flexible enough to hang with Ruby. To solve the problem, I created BERT, BERT-RPC, and Ernie. BERT (Binary ERlang Term) is a new serialization format based on Erlang's external term format. It supports rich data types such as atoms (symbols), heterogenous lists, tuples, and binary data. BERT-RPC is a simple, dynamic RPC protocol built on top of BERT providing both synchronous and asynchronous requests, caching directives, streaming, and even callbacks. Ernie is an Erlang/Ruby hybrid server that makes it dead simple to write your RPC functions in Ruby. Together, these technologies power GitHub's new federated architecture and allow us to independently and horizontally scale both frontend and backend layers.

Comments on this Talk

Photo_2 Tony Pitale, 21 Nov 08:30 PM

Despite starting the talk with a big block of (somewhat contradictory) pontificating, Tom pulled it out when explaining how he came up with, and implemented, BERT. The man is opinionated, and readily admits it. Overall the talk was solid, and his desire to share is palpable.

Stream.15248 kevwil, 22 Nov 12:47 AM

pretty well done presentation - some controversial, some wow - and awesome technology

Stream.605 britt, 22 Nov 08:43 PM

The technology was very cool, but I think I mostly enjoyed this presentation because Tom talked about a question I've had for a while "Why does GituHub build every @#$*ing thing themselves?"

Have an account? Sign in or register.

Leave a Comment

8 Ratings: 4.24

Delivery: 4.26

Content: 4.23

Last Five Ratings