Flux de travail des déploiements blue/green de services Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Flux de travail des déploiements blue/green de services Amazon ECS

Le processus de blue/green déploiement d'Amazon ECS suit une approche structurée comportant six phases distinctes qui garantissent des mises à jour d'applications sûres et fiables. Chaque phase a un objectif spécifique en validant et en faisant passer votre application de la version actuelle (bleu) à la nouvelle version (vert).

  1. Phase de préparation : créer l'environnement vert à côté de l'environnement bleu existant. Cela inclut la mise à disposition de nouvelles révisions de service et la préparation des groupes cibles.

  2. Phase de déploiement : Déployez la nouvelle version du service dans un environnement écologique. Amazon ECS lance de nouvelles tâches à l'aide de la révision du service mise à jour tandis que l'environnement bleu continue de desservir le trafic de production.

  3. Phase de test : valider l'environnement écologique à l'aide du routage du trafic de test. L'Application Load Balancer dirige les demandes de test vers l'environnement vert tandis que le trafic de production reste en mode bleu.

  4. Phase de transfert du trafic : déplacez le trafic de production du bleu au vert en fonction de votre stratégie de déploiement configurée. Cette phase inclut des points de contrôle de surveillance et de validation.

  5. Phase de surveillance : surveillez l'état de l'application, les indicateurs de performance et les états d'alarme pendant la période de cuisson. Une opération de restauration est lancée lorsque des problèmes sont détectés.

  6. Phase d'achèvement : finalisez le déploiement en mettant fin à l'environnement bleu ou en le maintenant pour d'éventuels scénarios de restauration, en fonction de votre configuration.

Flux de travail

Le schéma suivant illustre le flux de travail de blue/green déploiement complet, illustrant l'interaction entre Amazon ECS et l'Application Load Balancer :

Schéma complet illustrant le processus de blue/green déploiement dans Amazon ECS avec les interactions détaillées entre les composants, les phases de transfert du trafic et les points de contrôle de surveillance

Le flux de travail de déploiement amélioré inclut les étapes détaillées suivantes :

  1. État initial : Le service bleu (production actuelle) gère 100 % du trafic de production. L'Application Load Balancer possède un écouteur unique avec des règles qui acheminent toutes les demandes vers le groupe cible bleu contenant des tâches bleues saines.

  2. Provisionnement d'un environnement écologique : Amazon ECS crée de nouvelles tâches à l'aide de la définition de tâche mise à jour. Ces tâches sont enregistrées auprès d'un nouveau groupe cible vert mais ne reçoivent aucun trafic au départ.

  3. Validation du bilan de santé : l'Application Load Balancer effectue des contrôles de santé sur les tâches vertes. Ce n'est que lorsque les tâches écologiques passent aux tests de santé que le déploiement passe à la phase suivante.

  4. Routage du trafic de test : si elles sont configurées, les règles d'écoute de l'équilibreur de charge d'application acheminent des modèles de trafic spécifiques (tels que les demandes avec des en-têtes de test) vers l'environnement vert pour validation tandis que le trafic de production reste en bleu. Ceci est contrôlé par le même écouteur qui gère le trafic de production, en utilisant des règles différentes basées sur les attributs des demandes.

  5. Transfert du trafic de production : en fonction de la configuration du déploiement, le trafic passe du bleu au vert. Dans les blue/green déploiements ECS, il s'agit d'un changement immédiat (all-at-once) où 100 % du trafic est transféré de l'environnement bleu vers l'environnement vert. L'Application Load Balancer utilise un écouteur unique avec des règles d'écoute qui contrôlent la distribution du trafic entre les groupes cibles bleus et verts en fonction des pondérations.

  6. Surveillance et validation : tout au long du transfert de trafic, Amazon ECS surveille les CloudWatch métriques, les états d'alarme et l'état du déploiement. Les déclencheurs de restauration automatique s'activent si des problèmes sont détectés.

  7. Période de cuisson : durée pendant laquelle les révisions du service bleu et vert sont exécutées simultanément après le déplacement du trafic de production.

  8. Fin de l'environnement bleu : une fois le transfert de trafic et la validation réussis, l'environnement bleu est arrêté pour libérer les ressources du cluster, ou maintenu pour permettre une restauration rapide.

  9. État final : L'environnement vert devient le nouvel environnement de production, gérant 100 % du trafic. Le déploiement est marqué comme réussi.

Étapes du cycle de vie du

Le processus de blue/green déploiement passe par des étapes distinctes du cycle de vie (une série d'événements au cours de l'opération de déploiement, tels que « après le transfert du trafic de production »), chacune comportant des responsabilités et des points de contrôle de validation spécifiques. La compréhension de ces étapes vous permet de suivre la progression du déploiement et de résoudre les problèmes de manière efficace.

Chaque étape du cycle de vie peut durer jusqu'à 24 heures. Nous recommandons que la valeur reste inférieure à 24 heures. Cela est dû au fait que les processus asynchrones ont besoin de temps pour déclencher les hooks. Le système expire, échoue au déploiement, puis lance une restauration après une période de 24 heures. AWS CloudFormation les déploiements sont soumis à des restrictions de délai d'expiration supplémentaires. Bien que la limite de 24 heures reste en vigueur, elle AWS CloudFormation impose une limite de 36 heures à l'ensemble du déploiement. AWS CloudFormation échoue au déploiement, puis lance une annulation si le processus ne se termine pas dans les 36 heures.

Étapes du cycle de Description Utiliser cette étape pour Lifecycle Hook ?
SERVICE DE RÉCONCILIATION Cette étape se produit uniquement lorsque vous démarrez un nouveau déploiement de service avec plus d'une révision de service dans un état ACTIF. Oui
PRÉ_SCALE_UP La révision du service écologique n'a pas encore commencé. La révision du service bleu gère 100 % du trafic de production. Il n'y a aucun trafic de test. Oui
SCALE_UP Le moment où la révision du service écologique passe à 100 % et lance de nouvelles tâches. La révision du service vert ne dessert aucun trafic pour le moment. Non
POST_SCALE_UP La révision du service écologique a commencé. La révision du service bleu gère 100 % du trafic de production. Il n'y a aucun trafic de test. Oui
TEST_TRAFFIC_SHIFT Les révisions des services bleu et vert sont en cours. La révision du service bleu gère 100 % du trafic de production. La révision du service vert passe de 0 % à 100 % du trafic de test. Oui
POST-TEST_TRAFFIC_SHIFT Le changement de trafic d'essai est terminé. La révision du service écologique gère 100 % du trafic de test. Oui
PRODUCTION_TRAFFIC_SHIFT Le trafic de production est en train de passer à la révision des services écologiques. La révision du service écologique passe de 0 % à 100 % du trafic de production. Oui
POST-PRODUCTION TRAFFIC_SHIFT Le transfert du trafic de production est terminé. Oui
HEURE DE CUISSON Durée pendant laquelle les révisions du service bleu et vert sont exécutées simultanément. Non
NETTOYAGE La révision du service bleu a été complètement réduite à 0 tâches en cours d'exécution. La révision du service écologique est désormais la révision du service de production après cette étape. Non

Chaque étape du cycle de vie inclut des points de contrôle de validation intégrés qui doivent passer avant de passer à l'étape suivante. Si une validation échoue, le déploiement peut être automatiquement annulé pour garantir la disponibilité et la fiabilité du service.

Lorsque vous utilisez une fonction Lambda, celle-ci doit terminer le travail ou renvoyer IN_PROGRESS dans les 15 minutes. Vous pouvez utiliser le callBackDelaySeconds pour retarder l'appel à Lambda. Pour plus d'informations, consultez la fonction app.py dans le sample-amazon-ecs-blue champ - green-deployment-patterns on GitHub.