Que se passe-t-il après le déploiement ? Pourquoi votre pipeline n'est pas encore terminé
Vous venez de voir votre pipeline passer au vert. L'artefact a été déployé en production sans le moindre message d'erreur. Votre équipe souffle et passe à la tâche suivante. Mais voici la question qui fâche : l'application fonctionne-t-elle réellement pour les utilisateurs ?
J'ai vu des équipes célébrer un déploiement réussi pour découvrir une heure plus tard que la nouvelle fonctionnalité avait silencieusement cassé la connexion utilisateur. Les logs de déploiement n'affichaient aucune erreur. Le serveur tournait. Mais personne ne pouvait se connecter. Le pipeline considérait le travail comme terminé, tandis que le vrai problème passait inaperçu jusqu'à ce que les utilisateurs commencent à se plaindre.
Cet écart entre « déploiement réussi » et « déploiement fonctionnel » est exactement la raison d'être de la vérification post-déploiement. C'est l'étape qui sépare un déploiement techniquement réussi d'un déploiement qui apporte réellement de la valeur.
Les trois niveaux de vérification post-déploiement
La vérification post-déploiement est l'étape où votre pipeline vérifie la nouvelle version directement dans l'environnement cible. Ces vérifications doivent être automatisées et programmatiques, pas quelque chose que quelqu'un exécute manuellement depuis son poste. Il existe trois types courants, chacun servant un objectif différent.
Le diagramme suivant montre comment ces trois niveaux fonctionnent ensemble en séquence, avec un rollback ou une alerte automatique en cas d'échec.
Health Check : l'application est-elle vivante ?
Le health check est la vérification la plus basique. Il répond à une question : le service est-il en cours d'exécution et répond-il aux requêtes ? Généralement, il s'agit d'un endpoint dédié comme /health ou /status qui renvoie un code HTTP 200 lorsque l'application est vivante.
Mais voici le piège : un health check vous dit seulement que l'application n'est pas complètement morte. Il ne vous dit pas si l'application fonctionne correctement. Un service peut renvoyer un 200 tout en servant des données corrompues, en répondant lentement ou en échouant silencieusement sur des opérations critiques. Les health checks sont nécessaires, mais ils constituent le minimum, pas la ligne d'arrivée.
Smoke Test : les fonctionnalités principales fonctionnent-elles ?
Les smoke tests vont plus loin. Ils exécutent des scénarios simples qui couvrent les fonctions les plus critiques de votre application. Pour un site e-commerce, un smoke test peut ouvrir la page d'accueil, rechercher un produit et ajouter un article au panier. Pour une base de données, il vérifie que les tables principales sont accessibles et que les requêtes de base s'exécutent. Pour l'infrastructure, il vérifie que le load balancer répond et que les certificats SSL sont toujours valides.
Le mot clé ici est « simple ». Les smoke tests ne sont pas des suites de régression complètes. Ils testent le chemin heureux de vos fonctionnalités principales. Si le smoke test réussit, vous avez une confiance raisonnable que l'application n'est pas fondamentalement cassée. S'il échoue, vous savez que quelque chose ne va pas avant les utilisateurs.
Voici un smoke test bash minimal qui vérifie un endpoint API critique et se termine avec un code non nul si la réponse n'est pas un 200 :
#!/bin/bash
set -euo pipefail
# Smoke test : vérifier que l'endpoint de connexion renvoie 200
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" https://myapp.com/api/login)
if [ "$RESPONSE" -ne 200 ]; then
echo "Smoke test échoué : l'endpoint de connexion a renvoyé $RESPONSE"
exit 1
fi
echo "Smoke test réussi : l'endpoint de connexion a renvoyé 200"
Monitoring Synthétique : les performances sont-elles au rendez-vous ?
Le monitoring synthétique simule le comportement réel des utilisateurs selon un planning. Contrairement aux health checks et aux smoke tests qui s'exécutent une fois après le déploiement, le monitoring synthétique s'exécute en continu. Mais après un déploiement, votre pipeline peut déclencher des vérifications synthétiques pour s'assurer que la nouvelle version respecte toujours vos standards de performance.
Par exemple, vous pouvez avoir une vérification synthétique qui mesure le temps de réponse d'un endpoint API critique. Si le temps de réponse dépasse 500 ms après le déploiement, le pipeline doit le signaler même si l'endpoint renvoie des données correctes. Le monitoring synthétique détecte le type de dégradation que les health checks et les smoke tests manquent.
Que se passe-t-il en cas d'échec de la vérification
Lorsque la vérification post-déploiement échoue, votre pipeline doit agir immédiatement. La réponse la plus courante est un rollback : revenir à la version précédente connue comme bonne. Mais le rollback n'est pas la seule option, et ce n'est pas toujours la meilleure.
Si vous utilisez un déploiement canary, le pipeline peut arrêter de router le trafic vers la nouvelle version et rediriger tous les utilisateurs vers l'ancienne. Si vous utilisez un déploiement blue-green, le pipeline peut basculer le trafic vers l'environnement qui exécute encore l'ancienne version. L'action spécifique dépend de votre stratégie de déploiement, mais le principe est le même : arrêter les dégâts et rétablir le service.
Quelle que soit l'action entreprise, l'échec doit être enregistré comme preuve. Votre pipeline doit stocker les logs des health checks, des smoke tests et du monitoring synthétique, avec les horodatages et la version de l'artefact testé. Ces preuves deviennent cruciales lorsque vous enquêtez sur ce qui a mal tourné plus tard. Sans elles, vous devinez.
Pourquoi les équipes sautent cette étape
La vérification post-déploiement est souvent traitée comme optionnelle ou complètement ignorée. Les raisons varient. Certaines équipes font trop confiance à leurs tests pré-déploiement. D'autres pensent que les health checks suffisent. Beaucoup subissent simplement la pression d'aller vite et considèrent la vérification comme un ralentissement.
Mais sauter la vérification crée un angle mort. Vos tests pré-déploiement s'exécutent dans un environnement de staging qui ne correspond jamais parfaitement à la production. Les différences de configuration, de volume de données et d'infrastructure font que des tests réussis en staging ne garantissent pas des tests réussis en production. La vérification post-déploiement est votre filet de sécurité pour ces écarts.
Une checklist pratique pour la vérification post-déploiement
Si vous mettez en place la vérification post-déploiement pour la première fois, voici un point de départ minimal :
- Ajoutez un endpoint
/healthqui vérifie la connectivité de la base de données, du cache et des dépendances externes critiques - Écrivez trois à cinq smoke tests couvrant vos parcours utilisateur les plus critiques
- Mettez en place au moins une vérification synthétique qui mesure le temps de réponse d'une API ou d'une page clé
- Configurez votre pipeline pour déclencher un rollback automatiquement si une étape de vérification échoue
- Stockez tous les résultats de vérification avec des horodatages et des numéros de version
Commencez avec cet ensemble minimal et développez-le en apprenant ce qui casse dans votre contexte spécifique.
La vraie mesure d'un déploiement réussi
Un déploiement n'est pas terminé lorsque l'artefact est sur le serveur. Il est terminé lorsque vous avez la preuve que la nouvelle version fonctionne correctement et répond à vos standards. La vérification post-déploiement est ce qui vous donne cette preuve.
Sans elle, vous déployez à l'aveugle. Avec elle, vous savez exactement quand votre déploiement a vraiment réussi et quand il a échoué silencieusement. Cette connaissance fait la différence entre réagir aux plaintes des utilisateurs et détecter les problèmes avant que quiconque ne les remarque.