Le déploiement blue/green est un modèle de release qui utilise deux environnements parallèles — Blue et Green — placés derrière le répartiteur de trafic de la plateforme. Chaque environnement exécute l’application de façon indépendante. Le répartiteur décide quel environnement reçoit les requêtes. Une release procède en mettant à jour un environnement pendant que l’autre sert le trafic, puis en y basculant le trafic.
Le modèle élimine l’interruption lors des déploiements et offre une voie de retour arrière rapide : si la nouvelle version se comporte mal, basculez le trafic vers l’environnement précédent.
Pour les cas plus légers — un seul environnement avec un palier de serveur applicatif mis à l’échelle — utilisez la stratégie Sequential with delay du guide de déploiement. Le modèle blue/green vise les releases plus importantes où vous voulez un environnement de pré-production complet pour vérifier avant la mise en production.
Topologie
Trois environnements participent :
- Blue — une copie complète du stack applicatif.
- Green — une seconde copie complète du stack applicatif, configurée identiquement à Blue.
- Répartiteur de trafic — un environnement séparé exécutant l’add-on répartiteur. Il reçoit tout le trafic de production et le route vers Blue, Green ou les deux selon un ratio configuré.
Blue et Green peuvent être créés indépendamment — par exemple en clonant un seul environnement source — et le répartiteur est ensuite pointé vers les deux.
Flux de déploiement
Le flux met à jour l’application sur chaque côté à tour de rôle, sans interruption de production.
Étape 1 — drainer le trafic de Blue
Ouvrez la configuration du répartiteur de trafic. Déplacez le curseur de ratio à 0 … 100. Tout le trafic entrant va vers Green seulement.
Cliquez sur Apply.
Étape 2 — mettre à jour Blue
Sans trafic sur Blue, déployez la nouvelle version applicative sur Blue. Vérifiez le déploiement :
- Inspectez les journaux sur le serveur applicatif Blue.
- Frappez Blue directement (via son hostname d’environnement, ou un domaine réservé aux testeurs) pour confirmer que la nouvelle version se comporte correctement.
- Exécutez des smoke tests contre la nouvelle version.
Pas de pression temporelle à cette étape — Green gère la production.
Étape 3 — mettre à jour Green
Ouvrez à nouveau la configuration du répartiteur. Déplacez le curseur à 100 … 0. Blue sert maintenant tout le trafic avec la nouvelle version ; Green ne reçoit aucun trafic.
Appliquez les mêmes étapes de déploiement à Green. Vérifiez.
Étape 4 — restaurer la répartition originale
Une fois les deux côtés sur la nouvelle version, ouvrez le répartiteur et remettez le ratio à la distribution de régime établi (par exemple 50 … 50).
Le déploiement est complet. Les deux côtés exécutent la nouvelle version ; la production n’est jamais tombée.
Retour arrière
Si un problème apparaît après le déploiement sur Blue (mais avant la mise à jour de Green), basculez le ratio à 0 … 100 et Green continue de servir l’ancienne version. Faites le retour arrière sur Blue à votre rythme.
Si un problème apparaît après que les deux côtés aient été mis à jour, vous avez besoin d’un plan de récupération qui ne repose pas sur le déploiement encore présent de l’ancienne version. Modèles courants :
- Conservez un snapshot exporté de l’environnement de la version précédente et réimportez à la demande.
- Conservez l’artefact précédent dans le gestionnaire de déploiement et redéployez.
- Pour les changements de schéma de base de données, assurez-vous que les migrations sont rétro-compatibles afin que l’ancien code applicatif fonctionne encore contre le nouveau schéma.
Liste de vérification pré-déploiement
- Blue et Green ont un dimensionnement matériel, des variables d’environnement et une configuration identiques.
- La base de données est partagée (avec des changements de schéma rétro-compatibles) ou possède sa propre copie par environnement synchronisée avant la bascule.
- Les intégrations externes sont configurées pour accepter le trafic depuis les hostnames Blue et Green.
- Le répartiteur de trafic est configuré avec Blue et Green comme backends.