Aller au contenu

Exécution et rollback

Exécuter un changement de manière controlee — checklist, points de vérification, critères go/no-go et procédures de rollback.


Checklist pre-déploiement

Avant de toucher à la production, une checklist systematique réduit le risque d'oubli critique. Elle doit être validee par le Change Owner et un second (peer check) pour les changements normaux.

Catégorie Point de vérification Statut
RFC La RFC est approuvee et à jour
Communication Les parties prenantes ont été notifiees
Backup Backup/snapshot valide effectue et vérifié
Rollback La procédure de rollback est documentee et testée
Accès Les accès nécessaires sont disponibles (VPN, credentials, sudo)
Monitoring Les tableaux de bord et alertes sont ouverts
Communication canal Le canal de coordination (Slack/Teams) est ouvert avec l'équipe
Durée La fenêtre disponible couvre exécution + rollback complet

Exécution controlee

Un changement en production n'est pas une sequence d'actions techniques — c'est un protocole. Chaque étape doit être journalisee avec horodatage.

Principes d'exécution

  • Avancer pas a pas : exécuter les étapes une par une, vérifier entre chaque
  • Journaliser en temps réel : noter l'heure de chaque action dans le ticket RFC (pas après coup)
  • Nommer un coordinateur : une personne pilote l'exécution, les autres exécutent ou surveillent
  • Ne pas improviser : si la procédure ne correspond plus à la réalité, s'arrêter et évaluer avant de continuer

Points de vérification intermédiaires

Pour les changements longs, définir des checkpoints intermédiaires permettant d'évaluer si on continue ou on s'arrêté.

Un checkpoint inclut :

  • métriques attendues (taux d'erreur, latence, connexions actives)
  • comportement attendu des logs
  • décision : continuer / marquer un warning / rollback immédiat

Critères go/no-go

Les critères go/no-go sont des seuils pre-définis qui déterminent objectivement si on continue ou si on déclenche le rollback. Ils doivent être définis avant la fenêtre, pas pendant.

Critère Seuil Go Seuil No-Go
Taux d'erreur HTTP 5xx < 0.1 % baseline > 1 % pendant > 2 min
Latence P99 < 200 ms baseline > 500 ms pendant > 3 min
Disponibilité du service 100 % Health check en échec > 30 s
Consommation CPU/RAM < 70 % > 90 % pendant > 5 min
Alertes criantes Aucune alerte critique Toute alerte P1/P2 déclenchée

Rollback impossible — le roll forward

Certains changements ne peuvent pas être rollbackes : migration de schéma de base de données avec suppression de colonnes, changement de format de données sans backward compatibility, mise à jour de firmware matériel. Dans ces cas, la stratégie est le roll forward : préparer à l'avance le correctif du problème le plus probable et l'appliquer en urgence plutôt que de tenter un rollback impossible. Cette stratégie doit être identifiée et documentee avant la fenêtre, jamais découverte pendant.


Procédures de rollback

Un rollback est une procédure technique, pas une décision de panique. Elle doit être préparée, testée et documentee comme toute autre procédure.

Décision tree rollback

graph TD
    A["Changement execute"] --> B{"Criteres go/no-go<br/>OK ?"}
    B -->|Oui| C["Continuer l'execution<br/>ou passer aux smoke tests"]
    B -->|Non| D{"Rollback<br/>possible ?"}
    D -->|Oui| E["Executer le rollback<br/>selon la procedure"]
    D -->|Non| F["Roll forward<br/>correctif pre-prepare"]
    E --> G{"Service restaure ?"}
    G -->|Oui| H["Clore l'incident<br/>PIR obligatoire"]
    G -->|Non| I["Escalade immediate<br/>mobiliser backup"]
    F --> G

Composantes d'une procédure de rollback

Élément Description
Déclencheur Condition exacte qui déclenche le rollback (lier aux critères go/no-go)
Décision owner Qui à l'autorité de dire "on rollback" — Change Owner ou coordinateur
Étapes techniques Sequence précisé avec commandes ou procédures
Durée estimée Temps attendu pour le rollback complet
Vérification Comment confirmer que le rollback est complet et le service restaure

Smoke tests post-changement

Les smoke tests sont des verifications rapides (5-15 minutes) qui confirment que les fonctions critiques du service fonctionnent après le changement.

Principes

  • Cibler les fonctions critiques : login, transaction principale, API health check — pas un test exhaustif
  • Automatiser quand possible : un script de smoke test lance après chaque déploiement est plus fiable qu'une checklist manuelle
  • Définir le critère de succès : vert = on clôture la fenêtre, rouge = on évalué go/no-go

Exemple de vérification manuelle structurée

Fonction Vérification Résultat attendu
Health check API GET /health retourné 200 HTTP 200, {"status": "ok"}
Authentification Login avec compte test Succès, token emis
Fonction principale Transaction de test de bout en bout Completee sans erreur
Monitoring Alertes actives Aucune alerte critique
Logs Logs post-changement Aucune erreur inattendue

Outils

Outil Description Lien
Runbook automation (PagerDuty, Rundeck) Exécution de runbooks avec journalisation automatique rundeck.com
Grafana Tableaux de bord de monitoring pour suivi pendant la fenêtre grafana.com
k6 / curl Smoke tests HTTP simples et rapides k6.io
Checklist.gg Checklists collaboratives en ligne pour les procédures checklist.gg