Main Content

BERT and Ernie: Scaling your Ruby site with Erlang

About the Talk

November 19, 2009 5:25 AM

San Francisco

San Francisco

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.

Ratings and Recommendations

Avg. Rating

Average based
on 8 ratings

comments powered by Disqus