Aller au contenu
Documentation medium

Postmortem blameless : apprendre des incidents

28 min de lecture

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.

Cycle vertueux du postmortem : Incident vers Résolution, Postmortem, Actions, Prévention puis Système amélioré

  • Distinguer un postmortem d'un simple compte-rendu d'incident, et savoir quand chacun s'impose
  • Conduire une analyse blameless qui cherche les causes systémiques au lieu d'un coupable
  • Appliquer la méthode des 5 pourquoi pour remonter du symptôme à la cause racine
  • Structurer un document de postmortem actionnable et animer la réunion associée
  • Éviter les anti-patterns qui vident l'exercice de sa valeur, de la chasse aux sorcières aux actions sans suite

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à.

Ces deux documents servent des objectifs différents :

AspectCompte-rendu d'incidentPostmortem
MomentPendant ou juste après l'incidentQuelques jours après, avec du recul
ObjectifTracer les faits et la résolutionAnalyser les causes et prévenir
ContenuChronologie, actions, résolutionCauses profondes, actions correctives
Durée de vieArchive de référenceDocument vivant avec suivi
AudienceÉquipe technique, supportToute l'organisation concernée
TonFactuel, techniqueAnalytique, 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 ? ».

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.

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 induitConséquence
Les équipes cachent leurs erreursLes incidents sont sous-déclarés
Les gens évitent les tâches risquéesL'innovation est freinée
L'information ne circule pasLes causes réelles restent inconnues
La confiance disparaîtLa collaboration se dégrade

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 ».

Une culture blameless produit des effets observables sur la fiabilité, dans le même sens à chaque fois, même si l'ampleur dépend fortement du contexte de l'organisation :

  • Déclaration d'incidents en hausse : les équipes signalent les problèmes plus tôt, y compris les presque-incidents
  • Temps de résolution en baisse : l'information circule sans filtre défensif
  • Récurrence des incidents en baisse : les vraies causes systémiques sont traitées, pas seulement les symptômes
  • Engagement des équipes renforcé : la confiance remplace la peur de la sanction

Un postmortem efficace suit une structure standardisée. Voici un exemple complet :

postmortem-2024-12-15-api-timeout.md
# Postmortem : Timeout API de paiement
Date de l'incident : 15 décembre 2024
Auteur : Marie Dupont
Participants : Jean Martin (Ops), Pierre Durand (Dev), Sophie Bernard (Support)
Statut : En cours de suivi
## Résumé exécutif
L'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édiate
Une requête de reporting lancée manuellement a verrouillé une table
pendant 45 minutes, bloquant progressivement toutes les connexions.
### Causes contributives
1. Pas de séparation entre base transactionnelle et reporting
2. Pas de timeout configuré sur les requêtes longues
3. Pas d'alerte sur le nombre de connexions actives
4. Documentation du pool de connexions inexistante
### Cause profonde
L'architecture ne prévoit pas d'isolation entre les charges de travail
critiques (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 apprises
1. Les requêtes ad-hoc sur la base de production sont un risque majeur
2. Le monitoring du pool de connexions était un angle mort
3. 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 min
  1. 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.

  2. 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 ».

  3. 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.

  4. 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.

  5. 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.

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.

Méthode des 5 pourquoi : du symptôme à la cause racine

Exemple concret :

QuestionRéponse
IncidentL'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 ».

Le dosage de l'assistance conditionne la franchise des échanges. Trop peu de monde et l'analyse rate des angles ; trop de monde, surtout du management en position de juge, et les participants s'autocensurent. La règle pratique tient en une ligne : invitez ceux qui détiennent une information de première main sur l'incident, laissez les autres en lecture du compte rendu.

  • 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)

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

Ce minutage n'est pas décoratif : il protège la partie la plus utile de la réunion. Le piège récurrent est de laisser la reconstitution de la chronologie déborder et grignoter le temps de l'analyse des causes, alors que c'est cette dernière qui produit les actions correctives. Surveillez donc le passage à la trentième minute ; si les faits ne sont pas encore stabilisés, tranchez et avancez, la chronologie se complétera par écrit après la séance.

PhaseDuréeObjectif
Introduction5 minRappeler les règles blameless
Chronologie20 minReconstituer les faits ensemble
Analyse des causes30 minIdentifier les causes profondes
Ce qui a fonctionné10 minValoriser les bonnes pratiques
Actions correctives20 minDéfinir les améliorations
Conclusion5 minRésumer et attribuer le suivi

Ces cinq règles ne sont pas un rituel formel : elles servent d'outil de recadrage au facilitateur. Affichées à l'écran ou au mur, elles permettent de couper une accusation naissante en pointant simplement la règle concernée, sans que cela paraisse personnel. La plus souvent invoquée en séance est la troisième, celle qui requalifie une erreur humaine en symptôme d'un système défaillant.

  1. Nous cherchons les causes, pas les coupables
  2. Chacun a agi rationnellement avec les informations disponibles
  3. Les erreurs humaines sont des symptômes, pas des causes
  4. Nous sommes là pour apprendre, pas pour juger
  5. Les désaccords sont bienvenus, les attaques personnelles non

Tous les incidents ne méritent pas un postmortem complet. Définissez des critères clairs pour votre organisation :

CritèrePostmortem obligatoirePostmortem recommandé
Durée> 30 minutes15-30 minutes
Impact utilisateurs> 1000 utilisateurs100-1000 utilisateurs
Impact financier> 10 000 €1 000-10 000 €
Données perduesOuiRisque avéré
Incident récurrent3ème occurrence2ème occurrence
Near missÉvité de justesse-
SolutionAvantagesInconvénients
Wiki d'équipeAccessible, recherche facilePeut devenir désorganisé
Dépôt GitVersionné, revue possibleMoins accessible aux non-tech
Confluence/NotionCollaboration facileDépendance à un outil
Dossier partagéSimpleRecherche 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.

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 ».

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é ?

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.

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.

Un postmortem isolé a peu d'impact. Son intégration dans les processus existants maximise sa valeur :

.gitlab-ci.yml (extrait)
# Création automatique d'un template de postmortem après incident majeur
create_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"

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.

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.

Cette liste se joue à chaud, quand personne n'a le temps de documenter. Son unique objectif est de préserver les preuves périssables : les logs qui tournent, les métriques qui s'écrasent, l'heure exacte de chaque action. Un postmortem de qualité se prépare ici, pas trois jours plus tard, car une chronologie reconstituée de mémoire est toujours fausse sur les minutes qui comptent.

  • 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

Cette phase se déroule à froid, une fois l'incident clos. Le point qui distingue une bonne préparation d'une mauvaise est le premier : attendre 24 à 48 heures. Trop tôt, les esprits sont encore sous tension et l'analyse dérive vers la justification ; trop tard, les souvenirs et les données commencent à se perdre. Le reste du travail consiste à rassembler les preuves collectées à chaud pour arriver en réunion avec une chronologie déjà ébauchée.

  • 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

Cette liste guide le facilitateur pendant la séance. L'étape la plus souvent bâclée est l'avant-dernière : formuler des actions SMART. Une action vague comme « améliorer le monitoring » ne survivra pas à la réunion, alors qu'une action spécifique, mesurable et datée génère un ticket concret. Chaque point coché ici doit produire une trace exploitable après la réunion, pas une bonne intention.

  • 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

C'est ici que se joue la valeur réelle du postmortem, et c'est ici qu'on abandonne le plus souvent. Rédiger le document sans créer les tickets correspondants transforme l'exercice en littérature : les actions correctives qui ne deviennent pas des tâches suivies ne seront jamais réalisées. La règle des 48 heures pour la rédaction vaut aussi pour l'ouverture des tickets, avant que l'urgence ne retombe et que l'incident ne soit oublié.

  • 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

Pour les équipes avec des incidents fréquents, des outils spécialisés facilitent la gestion des postmortems :

OutilTypePoints forts
PagerDutySaaSIntégration alerting, templates, suivi automatique
Opsgenie (Atlassian)SaaSIntégration Jira, collaboration temps réel
incident.ioSaaSSlack-native, automatisation
RootlySaaSChatOps, intégrations multiples
Jira Service ManagementSaaSIntégration ITSM complète
GitLabSelf-hosted/SaaSIssues + Wiki intégrés
  • Un postmortem analyse un incident résolu pour en tirer des enseignements ; il complète le compte-rendu, il ne le remplace pas.
  • L'approche blameless part du principe que chacun a agi rationnellement avec les informations disponibles : on corrige le système, pas les personnes.
  • La chronologie s'appuie sur les logs et métriques, jamais sur les souvenirs, préservés dès la phase à chaud de l'incident.
  • La méthode des 5 pourquoi fait passer de la cause immédiate à la cause profonde, souvent architecturale.
  • Chaque cause identifiée génère une action SMART avec responsable, échéance et priorité, suivie jusqu'à sa clôture.
  • Un postmortem non partagé ou dont les actions ne deviennent pas des tickets suivis est un exercice sans valeur.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn