Le choix d’une stratégie de déploiement efficace est une décision importante pour chaque équipe DevOps. Il existe de nombreuses options, et vous devez trouver la stratégie qui correspond le mieux à votre façon de travailler.

Êtes-vous une organisation agile ? Effectuez-vous l’intégration continue et la livraison continue (CI/CD) ? Développez-vous une application web ? Une application mobile ? Une application locale de bureau ou basée sur le cloud ? Ces facteurs, et bien d’autres, détermineront l’efficacité d’une stratégie de déploiement donnée.

Mais quelle que soit la stratégie que vous utilisez, n’oubliez pas que les problèmes de déploiement sont inévitables. Une fusion peut mal se passer, des bogues peuvent apparaître, une erreur humaine peut causer un problème en production. Le fait est que vous ne devez pas vous épuiser à essayer de trouver une stratégie de déploiement parfaite. Cette stratégie n’existe pas.

Au lieu de cela, essayez de trouver une stratégie qui soit hautement résiliente et adaptable à votre façon de travailler. Au lieu d’essayer d’éviter les erreurs inévitables, déployez le code d’une manière qui minimise les erreurs et vous permet de réagir rapidement lorsqu’elles se produisent. Pour de nombreuses équipes, la réponse à ce problème consiste à effectuer des déploiements canariens.

Les déploiements canariens peuvent vous aider à mettre votre meilleur code en production aussi efficacement que possible. Dans cet article, nous allons voir ce que sont les déploiements canariens et ce qu’ils ne sont pas. Nous examinerons les avantages et les inconvénients des déploiements canariens, nous les comparerons à d’autres stratégies de déploiement et nous vous montrerons comment vous pouvez facilement commencer à effectuer des déploiements canariens avec votre équipe.

Développeur analysant le code (Source)

Dans cet article, nous allons couvrir :

Qu’est-ce qu’un déploiement de canaris ?

Les déploiements canariens sont une bonne pratique pour les équipes qui ont adopté un processus de livraison continue. Dans un déploiement canari, une nouvelle fonctionnalité est d’abord mise à disposition d’un petit sous-ensemble d’utilisateurs. La nouvelle fonctionnalité est surveillée pendant plusieurs minutes à plusieurs heures, en fonction du volume de trafic, ou juste assez longtemps pour recueillir des données significatives. Si l’équipe identifie un problème, la nouvelle fonctionnalité est rapidement retirée. Si aucun problème n’est constaté, la fonctionnalité est mise à la disposition de l’ensemble des utilisateurs.

Le terme « déploiement de canaris » a une histoire fascinante. Il vient de l’expression « canari dans une mine de charbon », qui fait référence à l’utilisation historique des canaris et autres petits oiseaux chanteurs comme systèmes vivants d’alerte précoce dans les mines. Les mineurs emmenaient des oiseaux en cage avec eux sous terre. Si les oiseaux tombaient malades ou mouraient, ils étaient avertis de la présence de gaz toxiques inodores, comme le monoxyde de carbone. Bien qu’inhumain, c’était un procédé efficace utilisé en Grande-Bretagne et aux États-Unis jusqu’en 1986, date à laquelle des capteurs électroniques ont remplacé les canaris.

Oiseau canari sur fond numérique (Source)

Un déploiement canari transforme un sous-ensemble de vos utilisateurs – idéalement un sous-ensemble tolérant aux bogues – en votre propre système d’alerte précoce. Ce groupe d’utilisateurs identifie les bogues, les fonctionnalités défectueuses et les fonctionnalités peu intuitives avant que votre logiciel ne soit plus largement exposé.

Vos utilisateurs canaris peuvent être des adopteurs précoces auto-identifiés, un segment démographiquement ciblé ou un échantillon aléatoire. Quelle que soit la combinaison d’utilisateurs la plus pertinente pour vérifier votre nouvelle fonctionnalité en production.

Une façon utile de penser aux déploiements canariens est la gestion des risques. Vous êtes libre de proposer plus régulièrement de nouvelles fonctionnalités intéressantes sans avoir à craindre qu’une seule d’entre elles nuise à l’expérience de l’ensemble de votre base d’utilisateurs.

Les versions de Canary et les déploiements de Canary

Les expressions « version canari » et « déploiement canari » sont parfois utilisées de manière interchangeable, mais dans le cadre de DevOps, elles doivent être considérées comme distinctes. Une version canari est une version de test d’une application complète. Il peut s’agir d’une version nocturne ou d’une version bêta, par exemple.

Exemple de version Canary pour une application locale (Source)

Les équipes distribuent souvent des versions canari en espérant que les premiers utilisateurs et les utilisateurs expérimentés, qui sont plus familiers avec les processus de développement, téléchargeront la nouvelle application pour la tester en situation réelle. Les équipes chargées des navigateurs chez Mozilla et Google, ainsi que de nombreux autres projets open-source, sont friands de cette stratégie de diffusion.

D’autre part, les déploiements canariens sont ceux que nous avons décrits précédemment. Une équipe met en production de nouvelles fonctionnalités avec des adopteurs précoces ou différents sous-ensembles d’utilisateurs, dirigés vers le nouveau logiciel par un équilibreur de charge ou un indicateur de fonctionnalité. La majeure partie de la base d’utilisateurs voit toujours le logiciel actuel, stable.

Exemple de déploiement de Canary pour une application web (Source)

Avantages et inconvénients du déploiement des canaris

Les déploiements Canary peuvent constituer une stratégie de mise en production puissante et efficace. Mais ce n’est pas la bonne stratégie dans tous les scénarios possibles. Passons en revue les avantages et les inconvénients de l’utilisation des déploiements canariens afin que vous puissiez mieux déterminer s’ils ont un sens pour votre équipe DevOps.

Pros

Prise en charge des processus CI/CD

Les déploiements Canary raccourcissent les boucles de rétroaction sur les nouvelles fonctionnalités mises en production. Les équipes DevOps obtiennent plus rapidement des données d’utilisation réelles, ce qui leur permet d’affiner et d’intégrer la prochaine série de fonctionnalités plus rapidement et plus efficacement. Des boucles de développement plus courtes comme celle-ci sont l’une des caractéristiques des processus d’intégration et de livraison continues.

Contrôle granulaire sur les déploiements de fonctionnalités

Si votre équipe procède à des déploiements de fonctionnalités plus petits et réguliers, vous réduisez le risque que des erreurs perturbent votre flux de travail. Si vous commettez une erreur dans le déploiement du canari, vous n’aurez pas exposé un grand nombre d’utilisateurs à cette erreur, et il s’agira d’un problème mineur à résoudre. Vous n’aurez pas exposé l’ensemble de votre population d’utilisateurs et n’aurez pas eu besoin de retirer des collègues du travail planifié pour résoudre un problème de production majeur.

Tests dans le monde réel

Les tests internes ont leur place, mais ils ne remplacent pas la mise en œuvre de votre application devant des utilisateurs réels. Les déploiements Canary constituent une excellente stratégie pour effectuer des tests réels à petite échelle sans imposer les risques significatifs liés à la mise en production d’une application entièrement nouvelle.

Développeur travaillant sur un ordinateur portable (Source)

Améliorer rapidement l’engagement

En plus d’offrir de meilleurs tests techniques, les déploiements canariens vous permettent de voir rapidement comment les utilisateurs s’engagent avec vos nouvelles fonctionnalités. La durée des sessions augmente-t-elle ? Les mesures d’engagement augmentent-elles dans le canari ? Si aucun bogue n’est détecté, mettez cette fonctionnalité à la portée de tous.

Il n’est pas nécessaire d’attendre la fin d’un déploiement de test plus étendu. Engagez ces utilisateurs et commencez à itérer sur votre prochaine fonctionnalité.

Plus de données pour faire des analyses de rentabilité

Les développeurs peuvent voir la valeur de leur code, mais les équipes DevOps doivent toujours présenter des arguments commerciaux à la direction et à l’ensemble de l’organisation lorsqu’elles ont besoin de plus de ressources.

Les déploiements canariens peuvent vous montrer rapidement quelle est la demande pour de nouvelles fonctionnalités. Effectuez un déploiement canari d’une nouvelle fonctionnalité convaincante sur un petit groupe d’utilisateurs influents pour les faire parler. Utilisez les mesures d’engagement et de publicité pour justifier la nécessité de lancer une nouvelle initiative majeure liée à cette fonctionnalité.

Une gestion des risques plus forte

Les déploiements Canary sont effectivement une série de micro-tests. Le fait de déployer de nouvelles fonctionnalités de manière incrémentielle et de les vérifier une par une à l’aide de tests canariens peut réduire de manière significative le coût total des erreurs ou des problèmes système plus importants. Vous n’aurez jamais besoin de revenir en arrière sur une version majeure, de souffrir d’un problème de relations publiques et de devoir retravailler une base de code importante et difficile à manier.

Cons

Plus de frais généraux

Comme tout processus complexe, les déploiements canariens présentent des inconvénients. Si vous comptez utiliser un équilibreur de charge pour partitionner les utilisateurs dans le cadre d’un déploiement canari, vous aurez besoin d’une infrastructure supplémentaire et devrez prendre en charge une administration supplémentaire.

Dans ce scénario, vous créez un deuxième environnement de production et un backend qui fonctionnera parallèlement à votre environnement principal. Vous aurez deux bases de code, deux serveurs d’applications, potentiellement deux serveurs web, et une infrastructure réseau à maintenir.

Séquence de diagramme de déploiement Canary utilisant un routeur pour le partitionnement des utilisateurs (Source)

Par ailleurs, de nombreuses équipes DevOps utilisent des drapeaux de fonctionnalités pour gérer leurs déploiements canariens sur un seul système. Un drapeau de fonctionnalité peut diviser les utilisateurs en un test canari au moment de l’exécution dans une base de code unique. Les utilisateurs canariens voient la nouvelle fonctionnalité, et tous les autres exécutent le code existant.

Le déploiement d’applications locales est difficile

Si vous développez une application installée localement, vous courez le risque que les utilisateurs aient besoin de lancer une mise à jour manuelle pour obtenir la dernière version de votre logiciel. Si votre déploiement canari se trouve dans cette dernière mise à jour, votre nouvelle fonctionnalité peut ne pas être installée sur autant de systèmes clients que nécessaire pour obtenir de bons résultats de test.

En d’autres termes, plus votre logiciel fonctionne côté client, moins il se prête aux déploiements canariens. Une version complète de canary pourrait être une approche plus appropriée pour obtenir des résultats de test dans le monde réel dans ce scénario.

Les utilisateurs sont toujours exposés à des problèmes logiciels

Bien que l’objectif d’un déploiement canari soit de n’exposer qu’un petit nombre d’utilisateurs à une nouvelle fonctionnalité afin d’épargner l’ensemble de la base d’utilisateurs, vous exposerez quand même les utilisateurs finaux à un code moins testé. Si les retombées d’un problème rencontré par un petit nombre d’utilisateurs avec une fonctionnalité particulière sont trop importantes, envisagez d’éviter un déploiement canari en faveur de tests internes plus rigoureux.

Quand ne pas utiliser les déploiements canariens

Si les déploiements canariens constituent une excellente stratégie pour les organisations qui souhaitent expérimenter et innover en permanence, ils ne conviennent pas à tout le monde. Les déploiements canariens peuvent ne pas être la bonne stratégie si :

  • Des erreurs dans des déploiements même mineurs peuvent contribuer à des violations de la réglementation pour un système donné, comme dans le domaine de la santé sur un système de production gérant les données des patients.
  • Si la défaillance d’un service peut avoir des conséquences mortelles, par exemple sur des applications utilisées pour la gestion du réseau électrique ou des services d’urgence.
  • Si les conséquences financières ou organisationnelles d’une panne d’application peuvent causer un préjudice irréparable à votre entreprise.

Déploiements de Canary par rapport à d’autres stratégies de déploiement

Les déploiements canariens ne sont qu’une stratégie de déploiement potentielle que votre équipe peut utiliser. Ils sont aussi souvent confondus avec d’autres processus similaires mais distincts, comme les tests A/B. Voyons comment les déploiements canariens se comparent à d’autres stratégies de déploiement et à des processus similaires avec lesquels ils sont souvent confondus.

Déploiements canariens et tests A/B

Les déploiements canariens et les tests A/B utilisent tous deux plusieurs environnements de production ou plusieurs chemins de code marqués pour les tests, mais l’objectif de chacun est légèrement différent. Les équipes DevOps utilisent un déploiement canari pour déterminer si un nouveau logiciel présente des problèmes techniques ou de convivialité. Un test A/B compare deux variantes de travail différentes en termes de convivialité, d’engagement et d’autres mesures de l’expérience utilisateur afin de déterminer laquelle est la plus performante dans certaines conditions.

Déploiements canariens vs. déploiements bleus/verts

Les déploiements canariens sont aussi parfois confondus avec les déploiements bleu/vert. Les deux peuvent utiliser des environnements de production parallèles – gérés par un équilibreur de charge ou un indicateur de fonctionnalité – pour atténuer le risque de problèmes logiciels.

Dans un déploiement bleu/vert, ces environnements démarrent de manière identique, mais un seul reçoit du trafic (le serveur bleu). Votre équipe publie une nouvelle fonctionnalité sur l’environnement de sauvegarde à chaud (le serveur vert). Ensuite, le routeur, l’indicateur de fonctionnalité, ou toute autre méthode de gestion du trafic, fait progressivement passer les nouvelles sessions utilisateur du bleu au vert jusqu’à ce que 100 % du trafic passe au vert. Une fois la transition terminée, l’équipe met à jour le vieux serveur bleu avec la nouvelle fonctionnalité, et il devient alors l’environnement de sauvegarde à chaud.

La façon dont le basculement est géré dans ces deux stratégies diffère en raison du résultat souhaité. Les déploiements bleu/vert sont utilisés pour éliminer les temps d’arrêt. Les déploiements Canary sont utilisés pour tester une nouvelle fonctionnalité dans un environnement de production avec un risque minimal. Les déploiements Canary sont beaucoup plus ciblés.

Diagramme de déploiement bleu-vert avec une seule base de données (Source)

Comment effectuer un déploiement canari

La planification d’un déploiement de canaris se fait en quelques étapes simples :

Identifiez votre groupe de canaris

Il existe plusieurs façons de sélectionner un groupe d’utilisateurs pour être votre canari.

Sous-ensemble aléatoire

Choisissez un échantillon vraiment aléatoire de différents utilisateurs. Bien que vous puissiez le faire à l’aide d’un équilibreur de charge, les logiciels de gestion des drapeaux peuvent facilement acheminer un certain pourcentage du trafic total vers un test canari en utilisant un simple modulo.

Adopteurs précoces

Si vous menez un programme d’adoption précoce pour les utilisateurs très engagés, envisagez de les utiliser comme groupe canari. Faites-en un avantage de leur programme. En échange de la tolérance des bogues qu’ils pourraient rencontrer dans un déploiement canari, vous pouvez leur offrir des récompenses de fidélité.

Par région

Vous pourriez vouloir assigner une région spécifique pour être votre canari. Par exemple, vous pourriez définir des adresses IP européennes en fin de soirée pour votre déploiement canari. Vous éviterez ainsi d’exposer les utilisateurs de jour à vos nouvelles fonctionnalités, mais obtiendrez tout de même une poignée de sessions d’utilisateurs en dehors des heures de travail, que vous pourrez utiliser comme test.

Testeurs internes

Vous pouvez toujours configurer les sessions de vos sous-réseaux internes pour être le canari.

Schéma de déploiement CI/CD et canari (Source)

Décidez des paramètres de votre canari

L’objectif d’un déploiement canari est d’obtenir une réponse ferme par « oui » ou par « non » à la question de savoir si votre fonctionnalité peut être mise en production à grande échelle. Pour répondre à cette question, vous devez d’abord décider des métriques que vous allez utiliser et installer les moyens de surveiller les performances.

Par exemple, vous pouvez décider que vous voulez surveiller :

  • Nombre d’erreurs internes
  • Utilisation du CPU
  • Utilisation de la mémoire
  • Latence

Vous pouvez personnaliser rapidement et facilement un logiciel de gestion des fonctionnalités pour surveiller les analyses de performance. Ces plateformes peuvent être d’excellents outils pour encourager une culture de l’expérimentation.

Décider comment faire la transition entre le déploiement canari et le déploiement complet

Comme discuté, les versions canary ne devraient durer que de l’ordre de quelques minutes à quelques heures. Elles ne sont pas destinées à être des expériences trop longues. En raison de la brièveté du délai, votre équipe doit décider dès le départ du nombre d’utilisateurs ou de sessions que vous souhaitez avoir dans le canari et de la manière dont vous allez passer au déploiement complet une fois que vos mesures auront atteint des repères positifs.

Par exemple, vous pouvez opter pour un déploiement canari aléatoire 5/95. Configurez un indicateur de fonctionnalité pour déplacer 5 % de vos utilisateurs vers le test canari, tandis que les 95 % restants restent sur la version de production stable. Si vous constatez des résultats positifs, retirez l’indicateur et déployez complètement la fonctionnalité.

Vous pouvez aussi adopter une approche plus conservatrice. Une autre stratégie populaire consiste à déployer un test canari de manière logarithmique, en passant d’un échantillon aléatoire de 1 % à 10 % pour voir comment la nouvelle fonctionnalité résiste à une charge plus importante, puis à 100 %.

Déterminer l’infrastructure dont vous avez besoin

Une fois que votre équipe est sur la même longueur d’onde quant à l’approche à adopter, vous devez vous assurer que vous disposez de toute l’infrastructure nécessaire pour que le déploiement de votre canari se déroule sans accroc.

Vous avez besoin d’un système pour partitionner la base d’utilisateurs et pour surveiller les performances. Vous pouvez utiliser un routeur ou un équilibreur de charge pour le partitionnement, mais vous pouvez également le faire directement dans votre code avec un drapeau de fonctionnalité. Les indicateurs de fonctionnalités sont souvent plus économiques et plus rapides à mettre en place, et ils peuvent être la solution la plus puissante.

Utilisation de drapeaux de fonctionnalités pour un meilleur déploiement des canaris

En résumé, un indicateur de fonctionnalité n’est rien d’autre qu’une instruction « si » à partir de laquelle les utilisateurs prennent différents chemins de code au moment de l’exécution en fonction d’une ou plusieurs conditions que vous définissez. Dans un déploiement canari, cette condition est de savoir si l’utilisateur fait partie du groupe canari ou non.

Exemple d’indicateur de fonctionnalité

Imaginons que nous gérions un jeune site de réseau social pour les fans d’esports. Notre équipe DevOps a travaillé dur sur un système de recommandation de contenu qui donne aux utilisateurs des recommandations en temps réel basées sur les livestreams qu’ils regardent. L’équipe a affiné la fonction de recommandation pour qu’elle soit beaucoup plus rapide. Elle a obtenu de bons résultats lors des tests internes, et elle veut maintenant voir comment elle se comporte dans des conditions réelles.

L’équipe ne veut pas investir du temps et de l’argent dans l’installation d’une nouvelle infrastructure physique pour effectuer un déploiement canari. Au lieu de cela, l’équipe décide d’utiliser un indicateur de fonctionnalité pour exposer le nouveau moteur de recommandation à un échantillon aléatoire de 5 % de la base d’utilisateurs.

Le drapeau de fonctionnalité divise les utilisateurs en deux groupes avec un simple modulo lorsque les utilisateurs chargent un flux en direct. En quelques minutes, votre équipe reçoit les résultats de quelques milliers de sessions d’utilisateurs avec le nouveau code. En fait, le chargement est plus rapide et l’engagement des utilisateurs est amélioré, mais il y a un pic imprévu dans l’utilisation du CPU sur le serveur de production. L’équipe d’exploitation se rend compte qu’elle est sur le point de dégrader les performances, alors elle tue le drapeau canari.

Paramètres du test Canary dans le logiciel de gestion Flagship (Source)

L’équipe accepte de ne pas procéder au déploiement tant qu’elle ne peut pas déterminer pourquoi le nouveau code a provoqué le pic inattendu de CPU du serveur. Grâce aux résultats des tests en conditions réelles fournis par le déploiement du canari, ils ont une assez bonne idée de ce qui se passait et se remettent au travail.

Les déploiements Canary sont une partie essentielle de votre boîte à outils devops

Les stratégies de déploiement de logiciels ont évolué rapidement au cours des dernières décennies. Les déploiements canariens font partie des stratégies les plus puissantes actuellement disponibles pour les équipes qui souhaitent suivre les méthodologies DevOps telles que CI/CD.

Les déploiements canariens sont des stratégies efficaces car ils sont rapides à mettre en place, fournissent des données significatives et peuvent être déployés pour presque toutes les applications ou fonctionnalités que vous souhaitez tester. Ils donnent à votre équipe un retour d’information rapide, ce qui permet de raccourcir les cycles de développement et de mettre le nouveau code en production plus rapidement. Les tests de déploiement Canary fournissent des résultats significatifs qui vous aident à présenter des analyses de rentabilité pour de nouvelles initiatives à la direction de votre entreprise.

Dans cet article, nous avons exploré ce que sont les déploiements canariens, les avantages et les inconvénients de leur utilisation, comment ils se comparent à d’autres stratégies de déploiement et comment vous pouvez planifier un déploiement canari dans votre équipe. De nombreux outils sont disponibles pour gérer vos déploiements, mais les drapeaux de fonctionnalités pourraient être l’option la plus efficace que votre équipe DevOps peut commencer à utiliser dès aujourd’hui.

Les drapeaux de fonctionnalités rationalisent et simplifient les tests de déploiement des canaris. Ils atténuent le besoin d’un deuxième environnement de production. L’utilisation d’un logiciel de gestion des indicateurs de fonctionnalités comme Flagship permet de réaliser des tests et des analyses sophistiqués. Quelle que soit la méthode que vous choisissez, les déploiements canariens vous aideront à mettre rapidement le meilleur logiciel à la disposition de vos utilisateurs.

Vous voulez voir comment les drapeaux de fonctionnalités peuvent contribuer à vos déploiements canariens ? Essayez dès aujourd’hui une démo gratuite de Flagship d’AB Tasty.

Un guide simple pour augmenter les conversions

Un guide simple pour augmenter les conversions

En marketing, un appel à l'action ou CTA fait référence à un élément dont la formulation incite les utilisateurs à prendre une action immédiate ou à répondre. Les appels à l'action sont absolument nécessaires dans les campagnes de marketing et constituent un moyen de...

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *