Postmortem blameless : apprendre des incidents
Mise à jour :
En 2012, Knight Capital, une société de trading américaine, a perdu 440 millions de dollars en 45 minutes à cause d’un incident technique. Un déploiement défectueux avait réactivé du code obsolète. L’entreprise a frôlé la faillite.
Ce qui différencie les organisations résilientes des autres ? Leur capacité à apprendre de chaque incident. Le postmortem blameless transforme une crise en opportunité d’amélioration. Sans lui, les mêmes erreurs se répètent, la frustration s’installe, et la prochaine panne majeure n’est qu’une question de temps.
Qu’est-ce qu’un postmortem blameless ?
Un postmortem (littéralement « après la mort ») est une analyse structurée réalisée après un incident. Son objectif : comprendre ce qui s’est passé, pourquoi c’est arrivé, et comment éviter que ça se reproduise.
L’adjectif blameless (« sans blâme ») est fondamental : l’analyse se concentre sur les causes systémiques, pas sur la recherche d’un coupable. Cette approche, popularisée par Google dans leur pratique SRE (Site Reliability Engineering), part d’un principe simple : les personnes impliquées ont agi rationnellement avec les informations qu’elles avaient à ce moment-là.
L’analogie de l’aviation
L’industrie aéronautique est le modèle de référence pour l’analyse des incidents. Après chaque accident ou incident grave, une enquête approfondie est menée. L’objectif n’est jamais de punir le pilote, mais de comprendre la chaîne d’événements qui a conduit à l’incident.
Cette approche a permis de faire de l’avion le moyen de transport le plus sûr au monde. Un crash en 1970 pouvait tuer 100 personnes et se répéter 5 ans plus tard pour les mêmes raisons. Aujourd’hui, chaque incident alimente une base de connaissances mondiale qui profite à toute l’industrie.
Le postmortem blameless applique cette philosophie aux opérations informatiques.
Postmortem vs compte-rendu d’incident
Ces deux documents servent des objectifs différents :
| Aspect | Compte-rendu d’incident | Postmortem |
|---|---|---|
| Moment | Pendant ou juste après l’incident | Quelques jours après, avec du recul |
| Objectif | Tracer les faits et la résolution | Analyser les causes et prévenir |
| Contenu | Chronologie, actions, résolution | Causes profondes, actions correctives |
| Durée de vie | Archive de référence | Document vivant avec suivi |
| Audience | Équipe technique, support | Toute l’organisation concernée |
| Ton | Factuel, technique | Analytique, pédagogique |
Le compte-rendu répond à « que s’est-il passé ? ». Le postmortem répond à « pourquoi c’est arrivé et comment éviter que ça se reproduise ? ».
Les trois types de postmortem
Focus : les systèmes et leur comportement.
Ce postmortem analyse les défaillances matérielles, logicielles ou d’infrastructure. Il répond aux questions :
- Quel composant a défailli en premier ?
- Comment la panne s’est-elle propagée ?
- Pourquoi les mécanismes de protection n’ont pas fonctionné ?
Exemple : un serveur de base de données qui sature sa mémoire provoque un effet cascade sur les applications clientes. Le postmortem technique analyse la configuration mémoire, les requêtes problématiques, et l’absence d’alerting sur ce seuil.
Quand l’utiliser : pannes d’infrastructure, bugs applicatifs, problèmes de performance.
Focus : les processus et la communication.
Ce postmortem analyse les facteurs humains et organisationnels. Il répond aux questions :
- L’information a-t-elle circulé correctement ?
- Les bonnes personnes étaient-elles disponibles ?
- Les procédures existantes ont-elles été suivies ?
Exemple : un incident de sécurité détecté par l’équipe réseau n’est pas remonté à l’équipe sécurité pendant 48 heures faute de canal de communication défini. Le postmortem organisationnel analyse les circuits d’escalade et les responsabilités.
Quand l’utiliser : incidents impliquant plusieurs équipes, problèmes de coordination, échecs de communication.
Focus : la combinaison technique et organisationnelle.
La plupart des incidents majeurs ont des causes multiples. Un postmortem hybride analyse les deux dimensions en parallèle pour obtenir une vision complète.
Exemple : une mise en production échoue (cause technique : script de migration défectueux) ET personne n’est disponible pour rollback pendant 2 heures (cause organisationnelle : astreinte mal définie). Les deux aspects doivent être traités.
Quand l’utiliser : incidents majeurs, pannes ayant un impact métier significatif, incidents récurrents.
Pourquoi « blameless » change tout
Le réflexe naturel : trouver un coupable
Face à un incident, la réaction instinctive est de chercher « qui a fait ça ». Cette approche semble logique : identifier le responsable et le sanctionner devrait éviter que ça se reproduise.
En réalité, cette logique est contre-productive :
| Comportement induit | Conséquence |
|---|---|
| Les équipes cachent leurs erreurs | Les incidents sont sous-déclarés |
| Les gens évitent les tâches risquées | L’innovation est freinée |
| L’information ne circule pas | Les causes réelles restent inconnues |
| La confiance disparaît | La collaboration se dégrade |
L’approche blameless
Le postmortem blameless part d’un principe fondamental : les personnes impliquées ont agi rationnellement avec les informations qu’elles avaient à ce moment-là.
Si un administrateur a exécuté une commande qui a causé une panne, les questions pertinentes sont :
- Pourquoi cette commande était-elle possible dans cet environnement ?
- Quelles informations manquaient pour anticiper le risque ?
- Quel filet de sécurité aurait pu prévenir l’impact ?
Le problème n’est jamais « Jean a fait une erreur ». Le problème est « notre système a permis qu’une erreur humaine normale cause un incident majeur ».
Les bénéfices concrets
Une culture blameless produit des résultats mesurables :
- Déclaration d’incidents +40% : les équipes signalent les problèmes plus tôt
- Temps de résolution -25% : l’information circule sans filtre
- Récurrence des incidents -50% : les vraies causes sont traitées
- Engagement des équipes +30% : la confiance remplace la peur
Anatomie d’un postmortem
Un postmortem efficace suit une structure standardisée. Voici un exemple complet :
# Postmortem : Timeout API de paiementDate de l'incident : 15 décembre 2024Auteur : Marie DupontParticipants : Jean Martin (Ops), Pierre Durand (Dev), Sophie Bernard (Support)Statut : En cours de suivi
## Résumé exécutifL'API de paiement a été indisponible pendant 47 minutes (14h23-15h10)suite à une saturation du pool de connexions PostgreSQL.Impact : 1 247 transactions échouées, perte estimée à 45 000 €.
## Chronologie des événements| Heure | Événement ||-------|-----------|| 14h23 | Première alerte : temps de réponse API > 5s || 14h25 | L'équipe support signale des plaintes clients || 14h28 | Jean identifie la saturation du pool PostgreSQL || 14h35 | Tentative de restart du service API (échec) || 14h42 | Pierre identifie une requête bloquante non commitée || 14h48 | Kill de la session PostgreSQL problématique || 14h52 | Restart progressif des instances API || 15h10 | Retour à la normale confirmé |
## Analyse des causes
### Cause immédiateUne requête de reporting lancée manuellement a verrouillé une tablependant 45 minutes, bloquant progressivement toutes les connexions.
### Causes contributives1. Pas de séparation entre base transactionnelle et reporting2. Pas de timeout configuré sur les requêtes longues3. Pas d'alerte sur le nombre de connexions actives4. Documentation du pool de connexions inexistante
### Cause profondeL'architecture ne prévoit pas d'isolation entre les charges de travailcritiques (transactions) et non critiques (reporting).
## Ce qui a bien fonctionné- Détection rapide par le monitoring (< 5 min)- Communication fluide entre les équipes- Logs suffisamment détaillés pour le diagnostic- Rollback possible sans perte de données
## Ce qui a mal fonctionné- Pas de [runbook](/docs/documenter/concevoir/runbooks/) pour ce type d'incident- Temps de diagnostic trop long (14 min)- Première tentative de correction inefficace- Pas d'alerte sur les verrous de longue durée
## Actions correctives
| Action | Responsable | Échéance | Priorité ||--------|-------------|----------|----------|| Créer une réplique dédiée au reporting | Pierre | 15 jan | Haute || Configurer statement_timeout à 5 min | Jean | 20 déc | Critique || Ajouter alerte sur connexions > 80% | Jean | 20 déc | Haute || Rédiger runbook « saturation pool PG » | Marie | 10 jan | Moyenne || Former l'équipe support au diagnostic | Sophie | 31 jan | Moyenne |
## Leçons apprises1. Les requêtes ad-hoc sur la base de production sont un risque majeur2. Le monitoring du pool de connexions était un angle mort3. L'équipe a besoin d'un runbook pour les incidents base de données
## Métriques de suivi- Nombre d'incidents pool de connexions : objectif 0 sur 6 mois- Temps moyen de détection : objectif < 2 min- Temps moyen de résolution incidents DB : objectif < 15 minLes cinq qualités d’un bon postmortem
-
Factuel
Un bon postmortem décrit les faits sans interprétation ni jugement. « Le service a été redémarré à 14h52 » plutôt que « Jean a enfin pensé à redémarrer le service ».
La chronologie doit être vérifiable. Les heures proviennent des logs, pas des souvenirs. Les actions sont décrites objectivement.
-
Complet
Toutes les informations nécessaires sont présentes : contexte, chronologie, causes, impacts, actions. Un lecteur qui n’a pas vécu l’incident doit pouvoir comprendre ce qui s’est passé et pourquoi.
Les zones d’ombre sont explicitement mentionnées : « Nous n’avons pas pu déterminer pourquoi le monitoring n’a pas alerté plus tôt ».
-
Actionnable
Chaque cause identifiée génère une action corrective. Chaque action a un responsable, une échéance et une priorité. « Améliorer le monitoring » n’est pas une action. « Ajouter une alerte Prometheus sur pg_stat_activity > 80 connexions » en est une.
-
Partagé
Un postmortem qui reste dans un tiroir ne sert à rien. Il doit être accessible à toutes les personnes concernées, présenté en réunion d’équipe, et référencé dans la documentation.
Les équipes qui n’ont pas participé à l’incident doivent pouvoir apprendre de l’expérience des autres.
-
Suivi
Les actions correctives sont trackées jusqu’à leur complétion. Un postmortem sans suivi est un exercice de style. Le statut des actions est mis à jour régulièrement, et un bilan est fait après l’échéance de la dernière action.
La méthode des 5 pourquoi
Pour identifier les causes profondes, la technique des 5 pourquoi (5 Whys) est particulièrement efficace. Développée par Toyota dans le cadre du Lean Manufacturing, elle consiste à poser la question « Pourquoi ? » de manière itérative jusqu’à atteindre la cause racine.
Exemple concret :
| Question | Réponse |
|---|---|
| Incident | L’API de paiement a été indisponible pendant 47 minutes |
| Pourquoi ? | Le pool de connexions PostgreSQL était saturé |
| Pourquoi ? | Une requête maintenait un verrou sur une table depuis 45 minutes |
| Pourquoi ? | La requête de reporting n’avait pas de timeout configuré |
| Pourquoi ? | Aucune politique de timeout n’existe pour les requêtes |
| Pourquoi ? | L’architecture n’a pas été conçue pour isoler les charges de travail |
La cause profonde n’est pas « quelqu’un a lancé une requête », mais « l’architecture permet qu’une requête de reporting impacte les transactions critiques ».
Organiser la réunion de postmortem
Qui participe ?
- Obligatoire : les personnes directement impliquées dans l’incident
- Recommandé : les équipes impactées (support, métier)
- Optionnel : le management (en observateur, pas en juge)
Le rôle du facilitateur
Un facilitateur neutre guide la discussion. Son rôle :
- Maintenir le focus sur les faits et les causes
- Couper court aux accusations ou justifications
- S’assurer que toutes les voix sont entendues
- Garder le timing (1h30 maximum)
- Prendre des notes structurées
Déroulement type (1h30)
| Phase | Durée | Objectif |
|---|---|---|
| Introduction | 5 min | Rappeler les règles blameless |
| Chronologie | 20 min | Reconstituer les faits ensemble |
| Analyse des causes | 30 min | Identifier les causes profondes |
| Ce qui a fonctionné | 10 min | Valoriser les bonnes pratiques |
| Actions correctives | 20 min | Définir les améliorations |
| Conclusion | 5 min | Résumer et attribuer le suivi |
Les règles à afficher en début de réunion
- Nous cherchons les causes, pas les coupables
- Chacun a agi rationnellement avec les informations disponibles
- Les erreurs humaines sont des symptômes, pas des causes
- Nous sommes là pour apprendre, pas pour juger
- Les désaccords sont bienvenus, les attaques personnelles non
Quand faire un postmortem ?
Tous les incidents ne méritent pas un postmortem complet. Définissez des critères clairs pour votre organisation :
| Critère | Postmortem obligatoire | Postmortem recommandé |
|---|---|---|
| Durée | > 30 minutes | 15-30 minutes |
| Impact utilisateurs | > 1000 utilisateurs | 100-1000 utilisateurs |
| Impact financier | > 10 000 € | 1 000-10 000 € |
| Données perdues | Oui | Risque avéré |
| Incident récurrent | 3ème occurrence | 2ème occurrence |
| Near miss | Évité de justesse | - |
Où stocker les postmortems ?
| Solution | Avantages | Inconvénients |
|---|---|---|
| Wiki d’équipe | Accessible, recherche facile | Peut devenir désorganisé |
| Dépôt Git | Versionné, revue possible | Moins accessible aux non-tech |
| Confluence/Notion | Collaboration facile | Dépendance à un outil |
| Dossier partagé | Simple | Recherche limitée |
Recommandation : utilisez le même outil que vos runbooks. La cohérence facilite l’adoption. Créez une structure de nommage claire : postmortem-YYYY-MM-DD-resume-court.md.
Les anti-patterns à éviter
La chasse aux sorcières
Symptôme : le postmortem se transforme en procès. Les questions commencent par « pourquoi tu as… » ou « qui a décidé de… ».
Conséquence : les équipes se braquent, l’information ne circule plus, les prochains incidents seront cachés.
Solution : le facilitateur recadre immédiatement. Reformuler « pourquoi Jean a fait ça » en « quelles informations manquaient pour éviter cette action ».
L’analyse superficielle
Symptôme : le postmortem s’arrête à la cause immédiate. « Le serveur a planté parce que le disque était plein. Action : ajouter du disque ».
Conséquence : le même incident se reproduira sous une autre forme. Les causes systémiques ne sont jamais traitées.
Solution : appliquer la méthode des 5 pourquoi systématiquement. Pourquoi le disque s’est rempli ? Pourquoi l’alerte n’a pas fonctionné ? Pourquoi personne n’a vérifié ?
Le postmortem fantôme
Symptôme : le postmortem est rédigé mais jamais partagé. Il reste dans le dossier de son auteur ou dans une page wiki que personne ne consulte.
Conséquence : l’apprentissage reste individuel. Les autres équipes feront les mêmes erreurs.
Solution : inclure une étape de diffusion dans le processus. Présentation en réunion d’équipe, notification dans le canal Slack, lien dans la documentation.
Les actions sans suite
Symptôme : le postmortem contient une belle liste d’actions correctives. Trois mois plus tard, aucune n’a été réalisée.
Conséquence : l’exercice perd sa crédibilité. Les équipes cessent de proposer des améliorations puisqu’elles ne sont jamais implémentées.
Solution : tracker les actions dans l’outil de gestion de projet (Jira, GitLab Issues). Faire un bilan mensuel des actions ouvertes. Escalader les blocages.
Intégrer les postmortems dans le workflow
Un postmortem isolé a peu d’impact. Son intégration dans les processus existants maximise sa valeur :
# Création automatique d'un template de postmortem après incident majeurcreate_postmortem: stage: post-incident script: - | cat > postmortems/postmortem-$(date +%Y-%m-%d)-${INCIDENT_ID}.md << EOF # Postmortem : ${INCIDENT_TITLE} Date de l'incident : $(date +%Y-%m-%d) Auteur : À compléter Participants : À compléter Statut : En cours de rédaction
## Résumé exécutif À compléter
## Chronologie des événements | Heure | Événement | |-------|-----------| | | |
## Analyse des causes ### Cause immédiate ### Causes contributives ### Cause profonde
## Actions correctives | Action | Responsable | Échéance | Priorité | |--------|-------------|----------|----------| | | | | | EOF - git add postmortems/ - git commit -m "chore: créer template postmortem incident ${INCIDENT_ID}" - git push rules: - if: $INCIDENT_SEVERITY == "major"Lien avec les runbooks
Chaque postmortem peut générer ou améliorer un runbook. Ajoutez systématiquement une action :
« Créer/mettre à jour le runbook pour ce type d’incident »
Le postmortem alimente la base de connaissances opérationnelles.
Lien avec le monitoring
Les angles morts révélés par l’analyse doivent se traduire en alertes :
« Ajouter une alerte sur [métrique] avec seuil [valeur] »
Le postmortem améliore la détection des futurs incidents.
Checklists de référence
Checklist « Pendant l’incident »
- Noter l’heure de début précise
- Identifier les personnes impliquées
- Capturer les logs et métriques pertinents
- Documenter chaque action tentée et son résultat
- Noter l’heure de résolution
Checklist « Préparation du postmortem »
- Attendre 24-48h après l’incident (recul nécessaire)
- Collecter les logs, métriques, captures d’écran
- Reconstituer la chronologie à partir des données
- Identifier tous les participants à inviter
- Réserver une salle et envoyer l’invitation
Checklist « Réunion de postmortem »
- Rappeler les règles blameless en début de réunion
- Valider la chronologie collectivement
- Appliquer la méthode des 5 pourquoi
- Identifier ce qui a bien fonctionné
- Définir des actions SMART (Spécifique, Mesurable, Atteignable, Réaliste, Temporel)
- Attribuer un responsable et une échéance à chaque action
Checklist « Post-réunion »
- Rédiger le document final dans les 48h
- Faire relire par les participants
- Publier dans l’espace documentaire
- Créer les tickets pour chaque action corrective
- Notifier les équipes concernées
- Planifier le suivi des actions
Outils de gestion des postmortems
Pour les équipes avec des incidents fréquents, des outils spécialisés facilitent la gestion des postmortems :
| Outil | Type | Points forts |
|---|---|---|
| PagerDuty | SaaS | Intégration alerting, templates, suivi automatique |
| Opsgenie (Atlassian) | SaaS | Intégration Jira, collaboration temps réel |
| incident.io | SaaS | Slack-native, automatisation |
| Rootly | SaaS | ChatOps, intégrations multiples |
| Jira Service Management | SaaS | Intégration ITSM complète |
| GitLab | Self-hosted/SaaS | Issues + Wiki intégrés |
Ressources externes
- Google SRE Book - Postmortem Culture ↗ — Le chapitre de référence sur la culture postmortem
- Google SRE Workbook - Postmortem Practice ↗ — Guide pratique avec templates
- Google SRE - Example Postmortem ↗ — Exemple complet de postmortem
- Atlassian - Blameless Postmortems ↗ — Guide Atlassian sur l’approche sans blâme
- PluralSight - How to conduct blameless postmortems ↗ — Guide pratique