Let it crash
Benoit Chesneau @benoitc
OSDC - Paris, 2013
http://enki-multimedia.org
Slide 2
Slide 2 text
A la recherche de
la fiabilité
Slide 3
Slide 3 text
Qu’est qu’un programme
fiable (reliable) ?
‣Résistant aux défaillance
‣Récupère facilement
‣Se change sans interruption
Slide 4
Slide 4 text
Du programme au système
‣Superviseurs
‣Load-balancer & Proxy
Slide 5
Slide 5 text
Le problème?
S’assurer que le programme
reste en vie
Slide 6
Slide 6 text
Erlang & OTP
Slide 7
Slide 7 text
Quoiqu’il advienne
rester en vie
Slide 8
Slide 8 text
Isolation de process
Slide 9
Slide 9 text
P
P
P
P
Chaque process est isolé
Slide 10
Slide 10 text
P
P
P
P
Défaillance
Le système continue de fonctionner
Slide 11
Slide 11 text
P
P
P
P
Récuperer
Détecte les défaillances et relance
Slide 12
Slide 12 text
Isolation
‣Pas de memoire partagée
‣Des process independants
➡ Message passing
‣Un process crash rapidement
‣Récupère indépendamment
Slide 13
Slide 13 text
Let it crash
{ok, Socket} = connect() {error, Error} will crash
receive!
{say, Msg} -> say(Msg);!
quit -> quit();!
_ ->!
% other value will crash!
throw(Error);!
end
case msg() of!
{say, Msg} -> say(Msg);!
quit -> quit()!
% other value will crash!
end
Slide 14
Slide 14 text
Fiabilité
‣Pattern matching
‣Isolation des process
➡ assertion
‣Supervision des process
‣Relance des process en échec