Aller au contenu

Reviews et fraîcheur : garder la documentation à jour

Mise à jour :

Imaginez la scène. 3h du matin, une alerte critique. L’ingénieur d’astreinte ouvre le runbook « Redémarrage API principale ». Il suit les étapes… et rien ne fonctionne. Le service a été migré il y a 6 mois, les commandes pointent vers des serveurs qui n’existent plus. Résultat : 2 heures de galère au lieu de 15 minutes.

Ce scénario arrive tous les jours dans des équipes qui n’ont pas de processus de review documentaire. Ce guide vous apprend à l’éviter.

Pourquoi la documentation vieillit mal

Une documentation obsolète est pire qu’une absence de documentation. Pourquoi ? Parce qu’elle donne une fausse confiance. L’opérateur suit une procédure qui ne fonctionne plus, perd du temps, aggrave parfois la situation.

Sans processus de maintenance actif, voici ce qui se passe :

Cycle de dégradation vs cycle maintenu

La ligne du haut montre la dégradation naturelle :

  1. Mois 1 : Documentation créée, testée, parfaite ✓
  2. Mois 3-6 : Petits changements de configuration (non documentés)
  3. Mois 9-12 : Migration majeure, document complètement obsolète ✗

La ligne du bas montre le cycle avec reviews régulières :

  1. Mois 1 : Documentation créée ✓
  2. Mois 3 : Review planifiée → corrections mineures 🔍
  3. Mois 6 : Document toujours fiable ✓

L’analogie du frigo

Imaginez votre réfrigérateur à la maison :

SituationSans vérificationAvec vérification hebdo
Yaourt périméDécouvert après 3 mois, moisiConsommé ou jeté à temps
Reste oubliéDéveloppe des formes de vie inconnuesIdentifié et traité rapidement
OrganisationChaos, impossible de trouver quoi que ce soitRangé, accessible

La documentation, c’est pareil. Vous devez ouvrir le frigo régulièrement pour vérifier ce qui est encore bon et ce qui doit partir.

Les cinq qualités d’une documentation fraîche

Pour qu’une documentation soit vraiment utile, elle doit répondre à cinq critères. Utilisez cette grille lors de vos reviews :

QualitéQuestion à poserConséquence si « non »
ExacteLes informations sont-elles correctes ?Erreurs, incidents aggravés
ComplèteManque-t-il des étapes ?Procédure impossible à terminer
ActuelleReflète-t-elle l’état actuel du système ?Confusion, perte de temps
AccessiblePeut-on la trouver facilement ?Documentation inutilisée
TestéeQuelqu’un l’a-t-il suivie récemment ?Bugs cachés, étapes manquantes

Définir une cadence de review

Tous les documents n’ont pas besoin de la même fréquence de vérification. Un runbook utilisé en situation d’urgence mérite plus d’attention qu’un document historique.

Fréquences recommandées par type

Documents critiques — review mensuelle

TypePourquoi cette fréquence
Runbook incident critiqueUtilisé en urgence, doit être parfait
Procédure de sécuritéContexte de menace évolue vite
Checklist déploiementPipeline change régulièrement

Ces documents peuvent faire la différence entre un incident résolu en 15 minutes et une crise de plusieurs heures.

Exemple de calendrier annuel

Voici un calendrier type pour une équipe moyenne :

JANVIER : Review runbooks critiques (semaine 2)
FÉVRIER : —
MARS : Review Service Overviews (semaine 1)
AVRIL : Review runbooks critiques (semaine 2)
MAI : —
JUIN : Review complète : runbooks ops + Service Overviews (semaine 1)
JUILLET : Review runbooks critiques (semaine 2)
AOÛT : —
SEPTEMBRE : Review Service Overviews (semaine 1)
OCTOBRE : Review runbooks critiques + ADRs annuels (semaine 2)
NOVEMBRE : —
DÉCEMBRE : Review annuelle complète - tout le corpus (semaine 1)

Comment faire une review efficace

Une review ne consiste pas à survoler le document en 30 secondes. C’est un processus structuré en plusieurs étapes.

Processus de review en 4 étapes

  1. Identifier les documents à reviewer

    Commencez par établir la liste des documents concernés :

    • Filtrez par date de dernière review
    • Priorisez les documents critiques
    • Vérifiez les signalements utilisateurs (« Ce doc m’a posé problème »)
    Terminal window
    # Exemple : trouver les docs non reviewées depuis 90 jours
    find docs/ -name "*.md" -exec grep -l "last_reviewed:" {} \; | while read f; do
    last=$(grep "last_reviewed:" "$f" | cut -d' ' -f2)
    days=$(( ($(date +%s) - $(date -d "$last" +%s)) / 86400 ))
    [ $days -gt 90 ] && echo "⚠️ $f : $days jours"
    done
  2. Vérifier les métadonnées

    Avant de plonger dans le contenu, validez les informations de base :

    ÉlémentQuestionAction si problème
    Date de mise à jourRéaliste ?Investiguer l’historique git
    OwnerToujours dans l’équipe ?Réassigner
    Liens internesFonctionnent-ils tous ?Corriger ou supprimer
    Tags/catégoriesToujours pertinents ?Mettre à jour
  3. Valider le contenu technique

    C’est l’étape la plus importante. Vérifiez :

    • Commandes : fonctionnent-elles toujours ?
    • Chemins : les fichiers/dossiers existent-ils ?
    • Captures d’écran : reflètent-elles l’interface actuelle ?
    • Versions : les numéros de version sont-ils à jour ?
  4. Décider et documenter

    À l’issue de la review, trois options :

    DécisionQuandAction
    OKDocument correctMettre à jour last_reviewed
    À mettre à jourCorrections nécessairesCréer ticket, deadline 48h
    À archiverDocument obsolèteDéplacer vers /archives/

    Documentez systématiquement la review :

    <!-- Review: 2025-01-15 par @alice - OK, liens vérifiés, commandes testées -->

Automatiser la détection d’obsolescence

Les reviews manuelles sont indispensables, mais l’automatisation peut vous aider à identifier les documents qui nécessitent une attention particulière.

Métadonnées dans le frontmatter

Standardisez vos frontmatters pour faciliter l’automatisation :

---
title: "Runbook : Redémarrage API principale"
last_updated: 2025-01-15
last_reviewed: 2025-01-15
review_frequency: monthly # monthly | quarterly | yearly | never
owner: "@alice"
criticality: high # high | medium | low
---

Script de vérification CI

Intégrez la vérification dans votre pipeline CI/CD :

check-doc-freshness.sh
#!/bin/bash
EXIT_CODE=0
find docs/ -name "*.md" | while read -r file; do
# Extraire les métadonnées
last_review=$(grep "last_reviewed:" "$file" | cut -d' ' -f2)
frequency=$(grep "review_frequency:" "$file" | cut -d' ' -f2)
# Calculer les jours depuis dernière review
if [ -n "$last_review" ]; then
days=$(( ($(date +%s) - $(date -d "$last_review" +%s)) / 86400 ))
# Seuils selon fréquence
case "$frequency" in
monthly) threshold=45 ;;
quarterly) threshold=120 ;;
yearly) threshold=400 ;;
*) threshold=90 ;;
esac
if [ "$days" -gt "$threshold" ]; then
echo "::warning file=$file::Review en retard ($days jours)"
EXIT_CODE=1
fi
else
echo "::warning file=$file::Pas de date de review"
fi
done
exit $EXIT_CODE

Alertes automatiques

Configurez des notifications quand :

ÉvénementCanal recommandéDestinataire
Doc non reviewée depuis > seuilSlack / EmailOwner du document
Owner a quitté l’équipeTicket JIRAManager / Tech Lead
Lien cassé détectéSlackÉquipe documentation
Aucun owner définiTicketProduct Owner

La review post-incident : un réflexe obligatoire

Après chaque incident, la documentation doit être revue systématiquement. C’est le moment idéal pour détecter les écarts entre la théorie (la doc) et la pratique (ce qui a vraiment fonctionné).

Lors du débrief post-incident, posez ces questions :

  • Le runbook utilisé était-il à jour ?
  • Manquait-il des étapes cruciales ?
  • Y avait-il des erreurs dans les commandes ?
  • A-t-on découvert une nouvelle procédure à documenter ?
  • Le Service Overview reflète-t-il la réalité ?
  • L’ordre des étapes était-il optimal ?

Archiver plutôt que supprimer

Quand une documentation devient obsolète (service décommissionné, procédure abandonnée), ne la supprimez pas. Archivez-la.

Pourquoi archiver ?

RaisonExplication
Historique préservéComprendre pourquoi certaines décisions ont été prises
Référence futureLe sujet peut revenir (migration inverse, audit)
Audit trailProuver que la procédure existait à une date donnée
FormationMontrer l’évolution des pratiques aux nouveaux

Structure d’archivage recommandée

docs/
├── actifs/ ← Documentation vivante
│ ├── services/
│ ├── runbooks/
│ └── onboarding/
└── archives/ ← Documentation figée
├── 2023/
│ └── api-v1-runbook.md
├── 2024/
│ └── ancien-monitoring.md
└── 2025/

Marquer clairement les archives

Ajoutez un bandeau visible en haut de chaque document archivé :

:::caution[Document archivé]
Ce document n'est plus maintenu.
**Raison** : Service décommissionné le 2025-01-15.
**Pour référence historique uniquement.**
:::

Mesurer la fraîcheur documentaire

Ce qui se mesure s’améliore. Voici les métriques clés à suivre :

MétriqueCibleSeuil d’alerteComment mesurer
% docs reviewées dans les temps> 90%< 80%Script CI hebdomadaire
Âge moyen depuis dernière review< 90 jours> 180 joursDashboard automatisé
Docs modifiées après incident100% des cas< 80%Checklist postmortem
Liens cassés0> 0Linter automatique
Docs sans date de review0> 5%Script CI
Docs sans owner0> 0Rapport mensuel

Tableau de bord suggéré

┌─────────────────────────────────────────────────────────────┐
│ 📊 SANTÉ DOCUMENTAIRE - Janvier 2025 │
├─────────────────────────────────────────────────────────────┤
│ Documents à jour : ████████████████████░░ 85% ⚠️ │
│ Reviews ce mois : 12 / 15 planifiées │
│ Âge moyen : 67 jours ✓ │
│ Liens cassés : 3 ⚠️ (voir ticket #1234) │
│ Docs sans owner : 1 ⚠️ (runbook-legacy) │
└─────────────────────────────────────────────────────────────┘

Anti-patterns à éviter

Anti-patternProblèmeSolution
« On reviewera quand on aura le temps »Le temps n’arrive jamaisBloquer des créneaux fixes au calendrier
Review = « ça a l’air bon »Aucune vraie vérificationChecklist obligatoire + test réel
Supprimer les vieilles docsPerte d’historiqueArchiver avec bandeau explicatif
Pas de date de reviewImpossible de savoir l’étatFrontmatter obligatoire en CI
Review par l’auteur seulBiais de confirmationToujours une review croisée
Ignorer les retours utilisateursProblèmes récurrentsCanal de feedback + suivi

À retenir

La dégradation est naturelle

Sans maintenance active, toute documentation devient obsolète. Ce n’est pas un échec, c’est une loi de la nature.

Planifiez les reviews

Ce qui n’est pas au calendrier n’arrive pas. Bloquez du temps dédié.

Automatisez la détection

Scripts CI, alertes Slack, dashboards : laissez les machines vous alerter des problèmes.

Archivez, ne supprimez pas

L’historique a de la valeur. Déplacez plutôt que détruire.

Ressources complémentaires