Le jour où j'ai cassé la production
Il était 14h32 un mardi. Je m'en souviens parce que Slack a explosé exactement 30 secondes après mon ENTER.
Le contexte
Un ticket simple : mettre à jour le statut d'un utilisateur. J'ouvre la console SQL de prod (déjà une erreur), je tape ma requête :
UPDATE users SET status = 'inactive';
-- WHERE id = 'xxx'; ← oublié
12 847 utilisateurs désactivés en une seconde.
La panique
Mon cœur s'est arrêté. J'ai regardé l'écran. J'ai relu. J'ai compris. J'ai prévenu mon lead immédiatement — c'est la seule chose que j'ai bien faite ce jour-là.
La résolution
- 14h33 : alerte au lead
- 14h35 : restauration du backup point-in-time
- 14h47 : tout est revenu à la normale
- 15h00 : post-mortem démarré
Personne ne m'a crié dessus. Le CTO m'a dit : « Bienvenue dans le club. Maintenant écris le post-mortem. »
Les leçons
- Toujours
BEGIN;avant un UPDATE manuel. Toujours. - La prod n'est pas un terrain de jeu. Passe par une migration.
- Avouer vite > essayer de cacher. Le temps c'est de l'argent (et des données).
Depuis, j'ai un alias shell : psql-prod me demande deux fois si je suis sûr.