Mengambil dari design principles bahasa pemrograman Erlang, supervision principles digunakan untuk membuat aplikasi yang fault tolerant. Aplikasi fault tolerant memiliki kemampuan untuk tetap berjalan walaupun terjadi kesalahan, dan kesalahan tersebut dianggap sesuatu yang wajar. Salah satu istilah yang cukup populer, yaitu “Let It Crash”". Pada model ini (supervision), ada tiga komponen utama, yaitu workers, supervisors, dan supervision tree.
Workers adalah proses-proses yang melakukan komputasi
Supervisors adalah proses yang memonitor perilaku workers. Supervisor akan melakukan restart terhadap workers jika terjadi hal yang salah.
Supervision tree merupakan struktur hierarki aplikasi yang tersusun atas supervisors dan workers.
Supervisor dapat melakukan supervise terhadap workers maupun supervisors.
Berikut contoh gambar supervision tree:

Supervision Tree
Keterangan:
- Kotak melambangkan supervisor
- Lingkaran menggambarkan workers
Dalam kotak (supervisor) ada yang berisi “1″ dan “a”. Kalau “1″ berarti supervisor tersebut menggunakan strategi one for one, sedangkan kalau “a” berarti supervisor tersebut menggunakan strategi one for all.
Seperti apa strategi one for one dan one for all tersebut? berikut penjelasannya.
One for one

One For One Supervision
Bila terjadi hal yang salah pada salah satu child, maka supervisor hanya akan melakukan restart terhadap child yang bermasalah tersebut.
All for one

All For One Supervision
Bila terjadi hal yang salah pada salah satu child, maka supervisor akan melakukan restart terhadap semua child.
Strategi one for one biasa digunakan bila proses-proses yang di-supervisi adalah proses yang independen, sedangkan strategi all for one digunakan bila proses-proses tersebut saling bergantung satu sama lain.
Supervision sangat populer di lingkungan bahasa pemrograman Erlang. Selain itu ada beberapa library, seperti Akka yang memiliki API untuk bahasa pemrograman Scala dan Java.
Untuk lebih jelas tentang Supervision Principles, khususnya dalam bahasa pemrograman Erlang, anda dapat membaca Erlang Design Principles versi 4.9





