Supervision Trees Design Pattern For Concurrent Programming

A basic concept in Erlang/OTP is the supervision tree. This is a process structuring model based on the idea of workers and supervisors.

  • Workers are processes which perform computations, that is, they do the actual work.
  • Supervisors are processes which monitor the behaviour of workers. A supervisor can restart a worker if something goes wrong.
  • The supervision tree is a hierarchical arrangement of code into supervisors and workers, making it possible to design and program fault-tolerant software.
Figure 1.1: Supervision Tree

In the figure above, square boxes represents supervisors and circles represent workers.

from "OTP Design Principles User's Guide"

Quoted on Wed Mar 20th, 2013