Slide 1

Slide 1 text

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

Slide 15

Slide 15 text

OTP ‣supervisor ‣gen_server, gen_fsm, gen_event ‣application ‣release

Slide 16

Slide 16 text

Changer un module fonctionnel {"2",! [{"1", [{load_module, m}]}],! [{"1", [{load_module, m1}]}]! }.! nouvelle version version à remplacer

Slide 17

Slide 17 text

demo https://github.com/benoitc/osdc2013_demo

Slide 18

Slide 18 text

En resumé, Erlang fournit ‣supervision ‣isolation des process ‣relance des process qui échouent ‣mise à jour à chaud

Slide 19

Slide 19 text

? @benoitc