Fuse - Let it Crash & Handle with Grace!
Tutorial: Erlang in Production - Tricks and Tools for Running Erlang Production Systems

Jesper L. Andersen
Creator of the eTorrent project

Fuse is an Erlang implementation of the Circuit Breaker pattern. It is a small tool which can sit between your Erlang system and dependent systems which exhibit cascading failures. The purpose of fuse is to improve your systems handling of failures with more grace than normal.

We present an overview of why and how to use the tool, and we present the internal workings and design considerations. Furthermore we touch on how Erlang Quickcheck was used as a driving vehicle for development.

Talk objectives: 

- Hopefully the audience can adapt and use fuse right after the talk. It will hopefully be helpful since it removes a number of worrisome problems for Erlang developers.

Target audience:

- Erlang developers who are using other fragile and brittle systems.


When your system is finished and deployed, the maintenance period for the system starts. This is by far the most time-expensive part of running a system. Bugs are more costly to fix. Errors slowly crawl into existence when the system is tried under a real workload.

Erlang can be a bliss to maintain in large environments—provided you know what you are doing. This tutorial is about system maintenance for real Erlang systems in production. What applications to include into your system. What to look out for. And how to approach trouble. The key idea is to have a self-healing system that will get itself through the night so you can get your sleep and handle the trouble the next morning. And to have load supervision so the system doesn't break down from overload.

Tutorial objectives:

- Basics of handling Erlang systems

- Using recon for live tracing on running systems

- Using the folsom/exometer application for adding metrics to your system

- Using fuse to handle cascading dependencies

- Using safetyvalve to limit system parallelism and controlling resource usage

Tutorial audience:

This tutorial is targeted toward beginners leaning toward intermediate users. The goal is to provide the audience with an overview of different tools enabling better handling of error cases.



Jesper is an Erlang hacker at Erlang Solutions Ltd, working on all kinds of Erlang stuff. From optimization, to protocols, to internals. He also has some knowledge about Unix systems, functional programming, semantics, type systems and formal verification.
Before joining Erlang Solutions, he studied computer science at Copenhagen University. And he wrote a couple of BitTorrent clients, in Haskell and Erlang.Jesper is a Danish programming language geek, who has been working with Erlang for about 10 years. He is generally interested in formal methods, self healing systems, fault tolerance, programming languages, distributed systems, concurrency, and parallelism. He likes to apply new theoretic research by finding a practical real-world application for the problem. Former works include BitTorrent clients in Erlang and Haskell, various load regulators for systems. Currently he is mostly interested in the application of property-based-testing to real systems and GraphQL implementations.

GitHub: jlouis

Twitter: @jlouis666

Back to conference page