Méthodes de déploiement - Mise en pratique de l'intégration continue/livraison continue sur AWS

Méthodes de déploiement

Dans le cadre d'un processus de livraison continue, vous pouvez envisager plusieurs stratégies et variantes de déploiement des nouvelles versions de logiciels. Cette section présente les méthodes de déploiement les plus courantes : simultanée (déploiement sur place), propagation, inaltérable et bleu/vert. Parmi ces méthodes, AWS indique lesquelles sont prises en charge par AWS CodeDeploy et AWS Elastic Beanstalk.

Le tableau ci-dessous récapitule les caractéristiques de chaque méthode de déploiement.

Méthode Impact d'un échec de déploiement Temps de déploiement Aucune interruption Pas de modification DNS Processus de restauration Code déployé sur
Déploiement sur place Temps d'arrêt
Redéploiement Instances existantes
Propagation Lot unique hors service. Tous les lots ayant abouti avant l'échec d'exécution de la nouvelle version de l'application.
Redéploiement Instances existantes
Propagation avec un lot supplémentaire (beanstalk) Minime si le premier lot échoue, sinon similaire à la propagation.
Redéploiement Instances nouvelles et existantes
Inaltérable Minimal
Redéploiement Nouvelles instances
Répartition du trafic Minimal
Réacheminer le trafic et résilier les nouvelles instances Nouvelles instances
Bleu/vert Minimal
Revenir à l'ancien environnement Nouvelles instances

Simultanée (déploiement sur place)

Le déploiement simultané (déploiement sur place) est une méthode que vous pouvez utiliser pour déployer un nouveau code d'application sur une flotte de serveurs existante. Cette méthode remplace tout le code en une seule action de déploiement. Cela nécessite un temps d'arrêt car tous les serveurs de la flotte sont mis à jour en même temps. Il n'est pas nécessaire de mettre à jour les enregistrements DNS existants. En cas d'échec du déploiement, la seule façon de restaurer les opérations consiste à redéployer le code sur tous les serveurs.

Dans AWS Elastic Beanstalk, on parle de déploiement simultané, qui est disponible pour les applications uniques et à charge équilibrée. Dans AWS CodeDeploy, on parle de déploiement sur place, avec une configuration de déploiement AllAtOnce.

Déploiement par propagation

Dans le cas d'un déploiement par propagation, la flotte est divisée en portions afin qu'elle ne soit pas mise à niveau en une seule fois. Au cours du processus de déploiement, deux versions logicielles, la nouvelle et l'ancienne, sont exécutées sur la même flotte. Cette méthode permet une mise à jour sans interruption. En cas d'échec du déploiement, seule la portion mise à jour de la flotte sera affectée.

Une variante de la méthode de déploiement par propagation, appelée version canary, implique tout d'abord le déploiement de la nouvelle version logicielle sur un très faible pourcentage de serveurs. Ainsi, vous pouvez observer le comportement du logiciel en production sur quelques serveurs, tout en minimisant l'impact de modifications importantes. Si, lors d'un déploiement canary, le taux d'erreurs est élevé, la mise à jour du logiciel est annulée. Sinon, le pourcentage de serveurs avec la nouvelle version est progressivement augmenté.

AWS Elastic Beanstalk a appliqué le modèle de déploiement par propagation avec deux options de déploiement, la propagation et la propagation avec un lot supplémentaire. Ces options permettent la mise à l'échelle de l'application avant de mettre les serveurs hors service, ce qui préserve ainsi toutes les capacités pendant le déploiement. AWS CodeDeploy applique ce modèle en tant que variation d'un déploiement sur place avec des modèles tels que OneAtATime et HalfAtATime.

Déploiement inaltérable et bleu/vert

Le modèle inaltérable consiste à déployer le code d'application en démarrant un tout nouvel ensemble de serveurs avec une nouvelle configuration ou une nouvelle version du code d'application. Il tire parti de la capacité du cloud qui permet de créer des ressources de serveur à l'aide de simples appels d'API.

La stratégie de déploiement bleu/vert est un type de déploiement inaltérable qui nécessite également la création d'un autre environnement. Une fois que le nouvel environnement est opérationnel et que tous les tests sont réussis, le trafic est transféré vers ce nouveau déploiement. Il est crucial que l'ancien environnement, c'est-à-dire l'environnement « bleu », reste inactif au cas où une restauration serait nécessaire.

AWS Elastic Beanstalk prend en charge les modèles de déploiement inaltérable et bleu/vert. AWS CodeDeploy prend également en charge le modèle bleu/vert. Pour en savoir plus sur la façon dont les services AWS réalisent ces modèles inaltérables, consultez le livre blanc Déploiements bleu/vert sur AWS.