Table of Contents
Dans la prestation moderne des logiciels, la vitesse de déploiement doit être jumelée à la vitesse de récupération. Des déploiements à haute fiabilité – ceux qui maintiennent la continuité du service, l'intégrité des données et la confiance des utilisateurs – dépendent de stratégies de renversement robustes intégrées directement dans les pipelines d'intégration continue et de déploiement continu (IC/CD). Un renversement est la capacité de retourner un système à un état stable connu lorsqu'une nouvelle version introduit des défaillances, qu'il s'agisse de régressions de performance, de vulnérabilités de sécurité ou de bogues fonctionnels.
Comprendre les stratégies de recul
Une stratégie de renversement est une procédure prédéfinie, souvent automatisée qui restaure un système à une version antérieure et stable de l'application. L'objectif est de minimiser le temps moyen de récupération (MTTR) et de contenir le rayon de souffle d'un déploiement défectueux. Le choix de la bonne stratégie dépend de votre architecture d'application, de la fréquence de déploiement, de la tolérance pour la dégradation partielle et de la criticité des données utilisateur.
Patterns de roulis de base
- Immédiate (Reversion) Rouleau:[ Le pipeline de déploiement conserve une copie de l'artefact et de la configuration précédentes. Lorsqu'il détecte une défaillance, le pipeline échange automatiquement la nouvelle version avec l'ancienne. C'est le modèle le plus simple, mais il peut causer une brève interruption si la réversion implique le redémarrage des services.
- Canary Deploiement:[ La nouvelle version est publiée à un petit pourcentage d'utilisateurs ou de serveurs alors que la majorité exécute encore la version stable. Les mesures sont surveillées pendant une période donnée. Si des anomalies apparaissent, le canari est repoussé en supprimant les nouvelles instances et en redirigeant le trafic vers la base de référence.
- Déploiement bleu-vert: Deux environnements identiques (bleu = courant en direct, vert = nouvelle version) sont maintenus. Après validation, le trafic est passé du bleu au vert. Si des problèmes se produisent, le trafic peut être immédiatement redirigé vers le bleu. Ce modèle fournit des temps d'arrêt proches de zéro et des retours rapides, mais double les coûts d'infrastructure.
- Rolling Update with Rollback: Dans les orchestres comme Kubernetes, de nouveaux pods remplacent les anciens de façon progressive. Si le déploiement échoue, l'orchestreur arrête automatiquement le déploiement et revient à la révision précédente. Il s'agit d'un rerollback intégré et incrémental qui fonctionne bien pour les services apatrides.
- Flags de fonctionnalités (Toggles):[ Plutôt que de faire reculer un déploiement entier, les drapeaux de fonctionnalités permettent aux équipes de désactiver une fonctionnalité spécifique au moment de l'exécution. C'est le retour le plus rapide pour les problèmes de niveau de fonctionnalités, mais exige que l'infrastructure de drapeau de fonctionnalités soit saine et que le changement de code soit compatible avec les rétro-compatibles.
Chaque stratégie a des compromis. Les retours immédiats sont simples mais peuvent causer des défaillances tout ou rien. Les déploiements Canaries réduisent le rayon de blason mais augmentent la complexité. Les déploiements bleu-vert offrent des retours instantanés complets à un coût plus élevé. Les pipelines les plus fiables combinent souvent plusieurs modèles : utiliser des drapeaux pour le contrôle fin, des libérations canari pour la validation des risques et bleu-vert comme mécanisme de déploiement pour les microservices de base.
Plongée profonde : retour immédiat
Le pipeline CI/CD stocke l'objet de déploiement précédent (image Docker, fichier jar, binaire compilé) et sa configuration (variables environnementales, schémas de base de données, paramètres de service). Lorsqu'un déclencheur de renversement s'allume – comme un pic dans le taux d'erreur, une baisse dans les performances de l'application ou une sonde de santé défaillante – le pipeline exécute un script qui redéploye la dernière bonne version connue.
Les équipes utilisant le retour immédiat doivent s'assurer que les migrations de bases de données sont réversibles (en utilisant des cadres de migration comme Flyway ou Liquibase avec des scripts “undo”) ou que l'application peut tolérer un mauvais ajustement de schéma pour une fenêtre de récupération courte.
Le renversement immédiat est le mieux adapté aux déploiements où le risque d'échec est élevé mais le coût de maintenir un environnement parallèle n'est pas justifié. Il est couramment utilisé dans les équipes plus petites, les monolithes anciens ou les composantes d'infrastructure critique où chaque milliseconde de temps d'arrêt compte.
Plongée profonde : déploiements aux Canaries
Un petit sous-ensemble d'infrastructure de production reçoit la nouvelle version tandis que le reste continue avec la version stable. Le pipeline surveille les principales mesures et les mesures de la vitesse d'erreur, la latence, le débit, les KPIs— pour le groupe canari. Si les mesures demeurent dans des seuils acceptables pour une durée définie (p. ex., 10 minutes, 1 heure ou 24 heures selon le niveau de confiance), le pourcentage de la capacité est élargi, atteignant finalement 100 %. Si les mesures de la capacité de production se dégradent, le canari est automatiquement retiré et le trafic réorienté.
La mise en oeuvre des déploiements canaris nécessite :
- Route: Balanceurs de charge ou maillages de service (p. ex., Istio, Envoy) trafic fractionné selon le poids ou les en-têtes de demande.
- Observabilité:[ Tableaux de bord en temps réel qui comparent les mesures canari aux mesures de base ayant une signification statistique.
- Décision automatisée: Un pipeline qui peut tuer le canari si il avertit le feu et le fait automatiquement la promotion si toutes les conditions sont remplies.
Les déploiements Canaries sont idéaux pour les services où un retour complet est coûteux ou où vous voulez valider un changement dans des conditions réelles d'utilisateur sans risquer la base d'utilisateurs entière. Ils sont une pierre angulaire de la livraison progressive et sont supportés nativement par des plateformes comme Spinnaker et Argo Rollouts.
Plongée profonde : déploiement bleu-vert
Le déploiement bleu-vert maintient deux environnements de production : bleu (vivant) et vert (inactif). Lorsqu'une nouvelle version est prête, elle est déployée dans l'environnement vert et testée à fond. Après validation, le routeur ou le régulateur de charge commute le trafic entrant du bleu au vert. Si un problème est détecté, le trafic peut être retransmis en bleu instantanément.
- Reversement du temps de décrochage [ en renversant le commutateur de circulation.
- Environnement de mise en scène complet[ qui reflète la production pour les essais préalables à la libération.
- En cas de surtension inattendue (vous pouvez garder les deux environnements au chaud).
Le principal inconvénient est le coût : vous devez fournir et payer pour deux environnements complets. Cependant, pour les services à haute fiabilité, ce coût est souvent justifié. Blue-green est particulièrement efficace pour les applications web et les API où l'état (comme les données de session) peut être géré au niveau de l'équilibreur de charge (par exemple, des sessions collantes ou des magasins de session partagés).
De nombreux fournisseurs de cloud offrent un déploiement bleu-vert comme fonction et mdash gérés; par exemple, AWS Elastic Beanstalk et Google Cloud Run fournissent un changement de trafic automatisé. Pour les déploiements conteneurisés sur Kubernetes, des outils comme Flux et ArgoCD permettent des modèles bleu-vert en utilisant des ressources personnalisées.
Mise en oeuvre des pipelines CI/CD
Le retour en arrière doit faire partie intégrante du pipeline CI/CD, et non pas être une post-réflexion. Un pipeline qui ne peut pas reculer est incomplet. Les composantes suivantes sont essentielles :
Déclencheurs automatiques
Le retour devrait être déclenché automatiquement par le pipeline en fonction des données de surveillance.
- Défaut de procéder à des tests de fumée après déploiement.
- Taux d'erreur HTTP 5xx élevés au-dessus d'un seuil.
- Violations de latence percentile (p. ex., p99 > 1 seconde).
- Application personnalisée contrôles médicaux retour non-200.
- Détection d'anomalies en journal (p. ex., rapport d'erreur Stackdriver, Datadog).
Ces déclencheurs doivent être configurés dans la définition du pipeline ou dans un outil de surveillance distinct qui envoie un webhook au système CI/CD. Par exemple, dans GitLab CI/CD, vous pouvez définir un travail “rollback” qui redéploye une balise image précédente. Dans Jenkins, un pipeline peut écouter un webhook de Prometheus Alertmanager. Dans Spinnaker, le rollback automatisé est intégré dans les étapes du pipeline.
Suivi des versions et gestion des artéfacts
Chaque déploiement doit pouvoir être traçable vers un artefact, une configuration et un état d'infrastructure précis. Utilisez un registre (Docker Hub, ECR, GCR) avec des balises immuables. Stockez des instantanés de configuration dans le contrôle de version ou un magasin de paramètres. Dans Kubernetes, utilisez RevisionHistoriqueLimit pour conserver plusieurs révisions ReplicaSet précédentes. Cela vous permet d'utiliser pour revenir rapidement.
Retours dans la base de données
Pour les changements de schéma, le pipeline de déploiement devrait exécuter les migrations dans le cadre du processus de libération, et chaque migration doit avoir une migration correspondante “rollback”. Le pipeline peut ensuite appliquer le script de rrollback automatiquement. Pour les changements de contenu de données (p. ex., mises à jour en vrac), envisager d'utiliser des instantanés de base de données ou une récupération ponctuelle.
Essai du processus de retour en arrière
Exécuter des exercices d'ingénierie du chaos qui simulent un mauvais déploiement et vérifient que le renversement s'exécute correctement. Inclure des tests de renversement dans votre pipeline CI/CD lui-même : après avoir déployé un canari, injectez délibérément une défaillance et confirmez que le pipeline revient à la base de référence. Cela renforce la confiance dans vos mécanismes de récupération.
Meilleures pratiques pour les retours à haute fiabilité
- Infrastructure immuable:[ Traitez vos serveurs et conteneurs comme jetables. Déployez-les via bleu vert ou canari pour que vous puissiez remplacer l'infrastructure plutôt que de la corriger en place.
- Vérification de la santé à chaque couche: Visibilité, disponibilité, sondes de démarrage pour conteneurs; transactions synthétiques pour la fonctionnalité de bout en bout.
- Livraison progressive:[ Intégrer les versions canari avec une analyse métrique automatisée avant le déploiement complet. Des outils comme Argo Rollouts supportent ce natif.
- Flags caractéristiques: Utilisez des drapeaux pour désactiver les fonctionnalités sans redéploiement. Cela fournit un retour en arrière pour les fonctionnalités qui ne nécessitent pas de retour en arrière de l'infrastructure.
- Logage et alerte : Chaque retour devrait générer un dossier d'incident, en informer l'équipe et saisir la raison de l'échec.
- Repliage de la colonne:[ Préférez ne rouler en arrière que le composant défaillant plutôt que la pile entière.
- Pinnage de la version:[ Dépendances de l'épingle (application et infrastructure) pour éviter des changements inattendus pendant le retour.
Outils de soutien des retours
Les écosystèmes DevOps modernes offrent une multitude d'outils qui mettent en œuvre ou améliorent les stratégies de renversement.
Jenkins
Les pipelines Jenkins peuvent stocker des artefacts précédents et utiliser les déclencheurs ou automatisés pour exécuter un travail de retour. Plugins comme les plugins “Job Import Plugin” ou “Deploy” simplifient cette situation.
GitLab CI/CD
GitLab’s Environnement données de déploiement. L'interface utilisateur fournit un bouton “Rollback” qui redéploye l'artefact précédent. Vous pouvez également définir des tâches de retour personnalisées dans .
Épineur
Spinnaker a été conçu pour des déploiements à haute fiabilité et propose une analyse canari intégrée et un retour automatisé via ses étapes de pipeline. Il s'intègre avec des outils de surveillance comme Stackdriver, Prométhée et Datadog pour déclencher des retours en fonction de seuils métriques.
Kubernetes
Pour des stratégies plus avancées, utilisez Argo Rollouts (canaire, bleu-vert) avec crochets de retour. La plate-forme gère automatiquement le remplacement des gousses et les contrôles de santé.
Casque
Les versions de Helm chart sont en version. Utilisez pour revenir à une version précédente. Combinées avec Kubernetes, cela vous donne un mécanisme robuste de retour pour des applications complexes.
Drapeaux de la fonction (LaunchDarkly, Flagsmith)
Les services de flag de fonctionnalité vous permettent de tuer une fonctionnalité instantanément sans redéploiement. C'est la forme la plus rapide de retour pour les défaillances de niveau de fonctionnalité et complète les retours de niveau de déploiement.
Exemple du monde réel : Plateforme de commerce électronique
L'équipe adopte un modèle de déploiement bleu-vert pour son service de paiement central, avec analyse canarielle pour son service de recherche. Lors d'une version typique du vendredi, une nouvelle intégration de passerelle de paiement est déployée dans l'environnement vert. Le pipeline effectue des essais d'intégration, puis échange le trafic. Cinq minutes plus tard, le taux d'erreur pour les confirmations de paiement saute de 0,1% à 4%. Le système de surveillance déclenche un renversement automatique : le régulateur de charge réoriente tout le trafic vers l'environnement bleu pendant que le vert est descendu pour le débogage. Le renversement complet prend 15 secondes. Pendant ce temps, le service de recherche utilise une version canari : 5% du trafic de recherche est dirigé vers une nouvelle version d'index de recherche. Si la la latence augmente de plus de 10%, le canari est arrêté et le trafic reprend à l'ancien index. Cette approche en couches assure le retour instantané complet (le checkout) tandis que les services moins critiques utilisent une livraison progressive basée sur le risque.
Conclusion
En comprenant et en mettant en œuvre des retours immédiats, des déploiements canari, des déploiements bleu-vert et des drapeaux de fonction, les équipes peuvent récupérer des échecs en quelques minutes ou secondes plutôt que des heures. L'intégration de déclenchements automatisés, de versions et de retours de migration de base de données dans le pipeline CI/CD crée un filet de sécurité qui permet aux équipes de se déployer en toute confiance. Les meilleurs systèmes combinent plusieurs modèles, testent les retours proactifs et tirent parti des outils modernes pour automatiser l'ensemble du cycle de vie.