Skip to main content

Building Reliable Systems: Lessons from Erlang

Garrett Smith (CloudBees)
Computational Thinking
Portland 255
Average rating: ****.
(4.12, 8 ratings)

Erlang is famous for building systems of incredible uptime and reliability!

What makes this language so adept at solving hard systems engineering problems? Is the answer cloaked in arcane mystery known only to elite Erlang magi?

As it turns out, Erlang’s design reflects well established tenets that came from Ericsson’s experience building and managing telecom infrastructure for over several decades.

In this presentation, we will look at the principles that inspired Erlang’s design — and importantly, how you can apply them in any language!

We’ll start with a short history of Erlang — in particular, the type of problems that Ericsson faced in the 1990s that drove the creation of a new language. As it turns out, these problems are familiar to anyone who’s built web applications: massive concurrency, extreme uptime, fault tolerance, performance, and most importantly, time to market.

Next, we’ll dive into the principles themselves:

  • Isolation
  • Fault detection and recovery
  • Separation of concerns
  • Back box design
  • State management
  • Dependency management

Finally, we’ll discuss practical ways to apply these principles in other languages including Ruby, Python, and Java. Techniques include:

  • Use of “fork-exec” for process isolation
  • Process supervision using tools like runit and launchd
  • Narrowing the scope of an “application”
  • Avoiding shared memory using message passing
  • Simplifying state
  • Minimizing dependencies

If you’re responsible for building systems, or just curious to learn more about the topic, this talk will distill the most important features of Erlang and give you a jump start in leveraging them in your own software!

Photo of Garrett Smith

Garrett Smith

CloudBees

Garrett Smith is senior architect at CloudBees, the company behind Jenkins CI and leading Java platform-as-a-service vendor. Garrett specializes in distributed systems and reliable software. His language of choice for systems programming is Erlang, a high productivity functional language specializing in concurrency and reliability. Garrett is an Erlang instructor and the author of the e2 library, which was built from his experience teaching Erlang. Garrett is also known for the videos “MongoDB is Web Scale” and “Node.js Is Bad Ass Rock Star Tech”.

Comments on this page are now closed.

Comments

Mohamed Chenini
04/11/2014 4:57am PDT

Hi,

It will be interesting to present a web application using Erlang, Cowboy, Jquery and HTML5.

@MohamedChenini Thanks, Mohamed