web-dev-qa-db-fra.com

Quelle est la différence entre le déploiement rouge / noir et le déploiement bleu / vert?

J'ai entendu dire que tous les deux décrivaient l'idée de déployer une mise à jour sur de nouvelles machines tout en maintenant les anciennes machines actives, prêtes à être restaurées en cas de problème. J'ai aussi entendu dire qu'il décrivait le partage de la charge entre des services mis à jour et un ancien service, toujours dans le but de procéder à des retours en arrière — parfois mettant fin aux anciens correctifs inactifs et parfois non.

Si j'ai bien compris, cela concerne uniquement les services cloud.

Quelqu'un peut-il aider à démystifier ces termes?

39
Erich

Les déploiements bleu/vert et rouge/noir représentent le même concept.

Bien que le premier soit le terme le plus courant, ce dernier semble être utilisé principalement dans Netflix et ses outils (comme Spinnaker ).

Elles ne s’appliquent qu’aux services en nuage, virtualisés ou conteneurisés dans la mesure où votre infrastructure doit pouvoir être automatisée pour donner un sens à cette approche.

29
Francesc Rosas

Déploiement bleu-vert

Technique de déploiement classique décrite dans le livre Continuous Delivery de Jezz Humble et David Farley:

L’idée est d’avoir deux versions identiques de votre environnement de production, que nous appellerons bleu et vert ... Les utilisateurs du système sont routés vers l’environnement vert, qui correspond à la production actuellement désignée. Nous voulons publier une nouvelle version de l'application. Nous le déployons donc dans l'environnement bleu ... Cela n'a aucune incidence sur le fonctionnement de l'environnement vert. Nous pouvons effectuer des tests de fumée dans l'environnement bleu pour vérifier son bon fonctionnement. Lorsque nous sommes prêts, passer à la nouvelle version est aussi simple que de modifier la configuration du routeur afin de pointer vers l’environnement bleu au lieu de l’environnement vert. L'environnement bleu devient alors une production. Ce basculement peut généralement être effectué en beaucoup moins d'une seconde. Si quelque chose ne va pas, nous basculons simplement le routeur sur l'environnement vert ".

Humble et Farley mentionnent ensuite le principal défi: gérer les modifications de schéma de base de données entre les versions verte et bleue.

Le principal avantage du déploiement bleu-vert est le temps d'indisponibilité nul ou quasi nul lors de la publication d'une nouvelle version. Et le déploiement bleu-vert permet canary release.

Déploiement rouge-noir

La version rouge est en production. Vous déployez la version noire sur un ou plusieurs serveurs. Lorsque la version noire est pleinement opérationnelle, vous permutez au routeur de lui diriger tout le trafic (ou vous redimensionnez Rouge à 0 instances et Noir à N). Si quelque chose ne va pas, vous annulez l'opération. Donc, cela ressemble au déploiement bleu-vert, mais il y a une légère différence : dans le déploiement bleu-vert, les deux versions peuvent recevoir des demandes en même temps temporairement, tandis que dans le rouge-noir, une seule des versions génère du trafic à tout moment . Voici quelques corroboration :

À tout moment, seul l'un des environnements est en direct, cet environnement servant tout le trafic de production. Pour cet exemple, Rouge est actuellement actif et Noir est inactif (dans ce cas, nous avons conservé le Noir réduit à zéro serveur) ...

Par conséquent, le rouge-noir est une spécialisation du bleu-vert. Mais déploiement rouge-noir est un terme plus récent utilisé par Netflix, Istio et d'autres infrastructures/plates-formes prenant en charge l'orchestration de conteneur. La signification réelle peut varier et de nombreuses personnes utilisent "rouge-noir" comme autre terme pour "bleu-vert", peut-être simplement parce que les couleurs de leur équipe sont rouge et noir . : ^)

40
Paulo Merson