La phase de mise en production des logiciels représente un pilier fondamental dans le développement actuel, en particulier dans le contexte du cloud.
Cependant, elle demeure souvent l’une des étapes les plus négligées du processus de livraison. Les entreprises ont tendance à sous-investir en temps et en ressources pour rendre ce déploiement rapide, fiable, automatisé, ou tout simplement performant.
Je constate encore fréquemment des procédures de déploiement manuelles, parfois assorties d’une liste de contrôle bien documentée, mais souvent, il s’agit de plans improvisés à la dernière minute.
L’automatisation du déploiement reste un objectif lointain, un point sur la feuille de route à court ou moyen terme, mais le chemin pour y parvenir est souvent semé d’embûches. Pourtant, disposer d’un processus de déploiement entièrement automatisé et fiable est crucial pour réaliser d’importantes économies de temps. Cela permettrait de libérer les équipes de développement des efforts considérables qu’elles consacrent à chaque mise en production.
Les stratégies de déploiement Canary et Blue-Green tirent parti de ces avantages et en ajoutent d’autres, comme une haute disponibilité et des processus d’installation et de restauration rapides. Elles permettent aux équipes de livrer plus souvent et sans nuits blanches. Examinons leurs apports et leurs différences.
Déploiement Bleu-Vert : Une Vue d’Ensemble
Source: cncf.io
Le déploiement Bleu-Vert vise à minimiser les interruptions de service et les risques liés aux nouvelles versions logicielles en créant deux environnements identiques : un environnement actif (bleu) et un environnement inactif (vert).
L’environnement actif héberge la version actuelle du logiciel et traite le trafic de production. L’environnement inactif est celui où la nouvelle version est déployée et testée.
Une fois la nouvelle version validée, le trafic est redirigé de l’environnement actif vers l’environnement inactif, qui devient alors le nouvel environnement actif. Ce processus peut être répété au besoin.
À lire également : Explication du déploiement Blue-Green et de son rôle dans le DevOps
Fonctionnalités Clés et Avantages
Voici les spécificités du déploiement Bleu-Vert :
- Deux environnements identiques, en termes de données et de processus, sont maintenus. L’environnement bleu (actif) gère les opérations quotidiennes des utilisateurs, tandis que l’environnement vert (inactif) accueille le nouveau déploiement et est constamment synchronisé avec le bleu.
- Le basculement de trafic entre l’environnement actif et l’environnement inactif est instantané, transformant ce dernier en nouvel environnement actif. Ce changement est immédiat, sans aucune période d’arrêt et sans intervention nécessaire de la part des utilisateurs.
- Une restauration rapide en cas de problème est possible, assurant un temps d’arrêt minimal en cas de problème avec la nouvelle version, et garantissant la haute disponibilité de l’application.
- Les tests automatisés jouent un rôle crucial dans le déploiement Bleu-Vert. Ils garantissent que la nouvelle version est rigoureusement testée avant son déploiement dans l’environnement actif.
- Ce type de déploiement s’inscrit dans un pipeline de livraison continue, ce qui se traduit par des mises en production plus fréquentes et plus rapides. Le déploiement étant déjà effectué, il suffit de basculer le trafic, ce qui permet de déployer potentiellement chaque jour, à condition que les activités de test soient rapides.
Déploiement Canary : Une Vue d’Ensemble
Source: cncf.io
Le déploiement Canary consiste à déployer progressivement de nouvelles fonctionnalités ou mises à jour à un petit groupe d’utilisateurs avant de les étendre à l’ensemble de la base d’utilisateurs.
Cette approche implique de déployer la nouvelle version du logiciel à un petit groupe, tout en conservant l’ancienne version pour le reste des utilisateurs. L’équipe de développement surveille de près la nouvelle version afin de s’assurer de sa stabilité et de son bon fonctionnement.
Si tout se déroule comme prévu, la nouvelle version est progressivement déployée à un plus grand nombre d’utilisateurs, jusqu’à ce qu’elle atteigne l’ensemble de la base d’utilisateurs. Cela permet de minimiser le risque d’introduire des bugs ou d’autres problèmes qui pourraient affecter tous les utilisateurs simultanément.
L’objectif est de réduire les risques lors de l’introduction de nouvelles fonctionnalités auprès d’une large base d’utilisateurs, en assurant une transition en douceur vers la nouvelle version.
À lire également : Explication du déploiement Canary et de son rôle dans le DevOps
Fonctionnalités Clés et Avantages
Voici les particularités du processus de déploiement Canary :
- Déployer d’abord la nouvelle version à un petit sous-ensemble d’utilisateurs, puis l’étendre progressivement à un plus grand nombre d’utilisateurs au fil du temps. Cette approche minimise le risque de bugs ou de problèmes affectant tous les utilisateurs en même temps.
- Surveiller attentivement la nouvelle version afin de s’assurer de sa stabilité et de son bon fonctionnement. Les développeurs peuvent ainsi recueillir plus rapidement des retours sur la nouvelle version et apporter les ajustements nécessaires avant un déploiement à grande échelle.
- En cas de problème, revenir rapidement et facilement à la version précédente. Cette capacité renforce la confiance des développeurs et des parties prenantes, en réduisant les risques de problèmes ayant un impact sur l’expérience utilisateur.
- Automatiser au maximum le processus de déploiement pour limiter les erreurs humaines.
Résumé : Comparaison Déploiement Bleu-Vert et Déploiement Canary
Fonctionnalité | Déploiement Bleu-Vert | Déploiement Canary |
Synchronisation des données | Synchronisation continue entre les environnements bleu et vert. | Un sous-ensemble d’utilisateurs reçoit la nouvelle version, le reste conserve la version actuelle. |
Processus d’activation | Basculement d’un environnement actif à un environnement inactif lorsque la nouvelle version est prête. | Un sous-ensemble d’utilisateurs teste activement la nouvelle version ; des problèmes peuvent survenir pour ce groupe. |
Haute disponibilité vs Vitesse de Retour | Priorité à la haute disponibilité. | Priorité à un retour plus rapide et à un déploiement contrôlé. |
Atténuation des Risques | Réduction de la possibilité de problèmes grâce à une diffusion progressive à un sous-ensemble d’utilisateurs. | Tests principalement dans des environnements inactifs ; certains problèmes réels peuvent ne pas être détectés. |
Approche de Test | Tests surtout dans des environnements inactifs ; certains problèmes réels peuvent ne pas être détectés. | Les utilisateurs de production agissent en tant que testeurs, identifiant les problèmes réels plus rapidement. |
Cas d’Utilisation | Netflix, Amazon, Etsy, LinkedIn et IBM utilisent le Bleu-Vert. | Netflix et Google utilisent le Canary, ainsi que des tests automatisés et des déploiements progressifs. |
Déploiement Bleu-Vert vs Déploiement Canary : Fonctionnalités
Déploiement
Le déploiement Bleu-Vert repose sur deux environnements (bleu et vert), constamment synchronisés en termes de données. Cela nécessite des processus de synchronisation continue entre les deux environnements.
Une fois la nouvelle version validée, le trafic est basculé de l’environnement actif vers l’environnement inactif, qui devient alors le nouvel environnement actif.
Ce processus évite les temps d’arrêt de production et la perte de temps liée au déploiement. Tous les utilisateurs de production continuent de travailler sur l’environnement actif, sans même remarquer le changement.
Source: aws.amazon.com
Le déploiement Canary implique le déploiement d’une nouvelle version logicielle à un petit groupe d’utilisateurs, tandis que la majorité des utilisateurs ou serveurs continuent d’utiliser la version actuelle. Il s’agit d’un déploiement progressif plutôt que d’un changement complet. Les testeurs sont, dans ce cas, les utilisateurs directs de production, bien qu’en nombre limité. Ce groupe teste activement la nouvelle version en conditions réelles, et une fois validée, la nouvelle version est déployée à l’ensemble des utilisateurs.
Le déploiement Bleu-Vert est idéal si la haute disponibilité est une priorité. Le déploiement Canary convient mieux si vous préférez un retour d’information plus rapide et un déploiement plus contrôlé (bien que plus lent).
Atténuation des Risques : Les Différences
Le déploiement Bleu-Vert atténue le risque d’échec en permettant un retour rapide à la version précédente stable. Ce retour se fait instantanément pour tous les utilisateurs. Bien que le risque de retard de nouvelles fonctionnalités existe en cas de restauration, aucun utilisateur n’est bloqué par des problèmes critiques de la nouvelle version.
La stratégie d’atténuation des risques du déploiement Canary repose sur la réduction progressive des possibilités de problèmes. Étant donné que les nouvelles fonctionnalités sont déployées à un sous-groupe d’utilisateurs en production, ils les utilisent en conditions réelles avant leur déploiement général. Ces premiers utilisateurs sont susceptibles de détecter rapidement les éventuels problèmes.
Différences dans l’Approche des Tests
Le déploiement Bleu-Vert réserve les tests à l’environnement inactif. Les développeurs, les testeurs et les autres parties prenantes peuvent y effectuer les tests nécessaires. Le comportement attendu est similaire à celui de l’environnement de production actif (grâce à la synchronisation des données et de la configuration).
Les testeurs effectuent leurs tests, mais il est possible qu’ils ne détectent pas tous les problèmes que les utilisateurs réels pourraient rencontrer en production. Cependant, ce n’est pas un problème majeur, car le basculement entre les environnements est rapide. Les développeurs peuvent ensuite corriger les problèmes et relancer le processus.
Source: ibm.com
Le déploiement Canary permet d’utiliser les utilisateurs de production comme testeurs. Ces utilisateurs ont tendance à identifier plus de problèmes en moins de temps, car ils utilisent les processus métiers réels de bout en bout.
Ils ne se contentent pas d’exécuter des scénarios et des cas de test, ils doivent de toute façon accomplir leurs tâches quotidiennes. Bien que le groupe de testeurs puisse rencontrer des problèmes temporaires, la majorité des utilisateurs n’est pas affectée. L’équipe de développement peut alors se concentrer immédiatement sur les problèmes les plus critiques identifiés en conditions réelles.
Expérience et Cas d’Utilisation
Voici quelques cas d’utilisation concrets où ces méthodes de déploiement sont mises en œuvre avec succès :
- Netflix utilise le déploiement Bleu-Vert pour les nouvelles versions de son service de streaming.
- Amazon et Etsy utilisent le déploiement Bleu-Vert pour leurs plateformes de commerce électronique.
- LinkedIn utilise le déploiement Bleu-Vert pour sa plateforme de réseautage social.
- IBM utilise le déploiement Bleu-Vert pour sa plateforme cloud.
- Netflix utilise également le déploiement Canary, combinant tests automatisés, indicateurs de fonctionnalités et tests A/B, pour déployer progressivement ses changements.
- Google utilise également le déploiement Canary pour déployer les changements apportés à ses services cloud, en s’appuyant sur des tests automatisés, la répartition du trafic et la surveillance pour déployer progressivement les changements à un sous-ensemble d’utilisateurs avant de les étendre à tous.
Bonnes Pratiques et Tendances Futures
L’automatisation est essentielle, et les pipelines DevOps représentent l’avenir des processus de déploiement. Il s’agit de processus entièrement automatisés comprenant des étapes telles que :
- Création ou mise à jour d’environnements cibles (services, données, utilisateurs ou privilèges).
- Déploiement automatisé des versions complètes ou delta du code source directement depuis le référentiel.
- Mise à niveau du schéma de la base de données et actualisation des données.
- Exécution automatisée des tests pendant le déploiement.
- Processus de restauration automatisés en cas d’échec d’un test majeur.
- Suppression de toute intervention manuelle.
Une fois ces pipelines de déploiement en place, il est possible d’intégrer les processus Canary ou Bleu-Vert, ou d’autres solutions. Ce sont des exemples qui ont fait leurs preuves. Ce sont des cadres philosophiques pour résoudre les problèmes liés au déploiement. Il est même possible de passer de l’un à l’autre au fil du temps ou d’utiliser une combinaison des deux.
Derniers Mots
Le recours à des procédures de déploiement manuel témoigne d’une immaturité des processus de développement, voire d’une inflexibilité de l’entreprise en termes de livraison logicielle. Dans les deux cas, un effort considérable est nécessaire pour rectifier la situation. Il est donc recommandé de mettre en œuvre les stratégies de déploiement décrites ci-dessus pour vos projets.
Découvrez ensuite comment déployer des applications dans Kubernetes.