Aller au contenu

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.

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

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 :

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

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.

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

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

Les cinq qualités d’un bon postmortem

  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.

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.

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

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)

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

Les règles à afficher en début de réunion

  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

Quand faire un postmortem ?

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-

Où stocker les postmortems ?

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.

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 :

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

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 :

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

Ressources externes

Guides complémentaires