Le jour où quelque chose tourne mal en production, tes journaux sont une scène de crime. Et comme sur une scène de crime, ce que tu n'as pas enregistré sur le moment est perdu pour toujours.
J'ai appris cela en enquêtant sur un incident qui n'avait laissé presque aucune trace. Quelque chose avait échoué, des utilisateurs en avaient souffert, et quand je suis allé reconstituer ce qui s'était passé, il n'y avait presque rien à lire. Pas d'horodatage utile, pas de contexte, aucun identifiant pour suivre une requête à travers le système. On ne peut pas enquêter sur ce qu'on n'a pas consigné, et nous n'avions pas consigné grand-chose.
Depuis, je traite la journalisation comme une partie du produit, pas comme une pensée après coup. Non pas tout consigner — un déluge de bruit est aussi inutile que le silence — mais consigner ce qui compte : ce qui a échoué, quand, avec quelle entrée, et de quoi cela dépendait. Assez pour qu'un humain, six mois plus tard, à trois heures du matin, puisse reconstituer l'histoire sans deviner.
Et il y a un détail qui change tout : pouvoir suivre une seule requête d'un bout à l'autre. Sans cela, un système distribué est une pièce pleine de témoins qui ont chacun vu un fragment. Avec cela, tu tiens un fil que tu peux tirer jusqu'à la cause.
Le meilleur moment pour ajouter un journal, c'est avant l'incident, quand tout va bien et que rien ne t'y oblige. Le pire moment pour découvrir qu'il manque, c'est pendant l'incident, quand la seule chose que tu veux, c'est savoir ce qui s'est passé — et que la scène est déjà vide.
– Serguey Shinder
Top comments (0)