Qu'est-ce que le canary testing ? Guide des bonnes pratiques
Réponse rapide
Le canary testing est une stratégie de déploiement logiciel dans laquelle une nouvelle version est d'abord diffusée à un faible pourcentage d'utilisateurs (généralement 1 à 5 %), afin que les équipes puissent surveiller les erreurs, les régressions de performance ou les comportements inattendus avant le déploiement auprès de tous. Il limite l'impact de tout bug introduit par la nouvelle version à un petit sous-ensemble d'utilisateurs plutôt qu'à l'ensemble de la production.
Points clés à retenir
- Démarrez les canary releases avec 1 à 5 % du trafic et élargissez progressivement (25 %, 50 %, 100 %) uniquement une fois que chaque étape a passé les seuils de surveillance.
- Surveillez de près les taux d'erreur, la latence et les principaux indicateurs de comportement des utilisateurs pendant la phase canary, avant d'approuver un déploiement plus large.
- Combinez les canary releases avec des feature flags pour pouvoir désactiver instantanément le nouveau comportement sans devoir redéployer entièrement.
Le canary testing est une stratégie de déploiement logiciel qui aide à réduire les risques lors du lancement de nouvelles fonctionnalités ou de mises à jour. C'est comme tester l'eau du bout du pied avant de plonger la tête la première.
Dans cet article, nous allons voir ce qu'est le canary testing, comment il fonctionne et pourquoi il est devenu une approche aussi populaire dans le développement logiciel moderne.
Introduction
Vous êtes-vous déjà demandé comment les grandes entreprises technologiques parviennent à déployer des mises à jour auprès de millions d'utilisateurs sans provoquer de chaos généralisé ? La réponse se trouve souvent dans le canary testing. Cette technique ingénieuse permet aux développeurs de tester le terrain auprès d'un petit groupe d'utilisateurs avant de lancer de nouvelles fonctionnalités pour tout le monde.
Le canary testing est une façon d'introduire avec prudence des changements dans votre logiciel, tout en surveillant de près leurs performances en conditions réelles. Il s'agit de minimiser les risques et de détecter les problèmes potentiels avant qu'ils ne deviennent de véritables casse-têtes.
Mais attendez, vous vous dites peut-être : « N'est-ce pas simplement du test A/B ? » Pas tout à fait. Si le canary testing, les canary releases et le canary deployment sont liés, chacun a sa propre particularité. Voyons cela en détail :
- Le canary testing désigne le processus global qui consiste à déployer progressivement des changements et à en surveiller l'impact.
- Les canary releases désignent les versions logicielles effectivement diffusées à un petit sous-ensemble d'utilisateurs.
- Le canary deployment est la mise en œuvre technique permettant de pousser ces versions vers les environnements de production.
Maintenant que les bases sont posées, plongeons plus en profondeur dans l'univers du canary testing !
Qu'est-ce que le canary testing ?
Le canary testing est une technique de déploiement dans laquelle une nouvelle version d'un logiciel est diffusée à un petit groupe d'utilisateurs avant d'être déployée à l'ensemble de la base d'utilisateurs. C'est comme confier à un groupe de courageux volontaires le soin de tester l'eau avant que tout le monde ne plonge.
L'objectif principal du canary testing est de :
- Identifier rapidement les problèmes potentiels
- Minimiser l'impact des bugs ou des problèmes de performance
- Recueillir des retours réels auprès de vrais utilisateurs
- Réduire le risque de défaillances généralisées
Mais pourquoi « canary » (canari) ? Ce terme vient en réalité d'une ancienne pratique minière. Les mineurs emmenaient des canaris dans les mines de charbon comme système d'alerte précoce en cas de gaz dangereux. Si le canari cessait de chanter (ou pire, tombait de son perchoir), les mineurs savaient qu'il fallait sortir vite. De la même manière, les tests canary servent de système d'alerte précoce pour détecter d'éventuels problèmes logiciels.
Outil de test A/B gratuit
Lancez votre prochain test A/B dans les règles de l'art
Éditeur visuel, script de 15 Ko, natif GA4 et gratuit à vie jusqu'à 100 000 visiteurs mensuels. Aucun développeur requis.
Pourquoi le canary testing est-il efficace ?
Le canary testing est devenu une stratégie incontournable pour de nombreuses équipes de développement, et pour de bonnes raisons. Voici pourquoi il est si efficace :
- Réduction des risques : en limitant les nouvelles versions à un petit groupe, vous limitez les dégâts potentiels de tout problème imprévu.
- Tests en conditions réelles : quelle que soit la rigueur de votre processus d'assurance qualité, rien ne remplace un test dans l'environnement de production réel avec de vrais utilisateurs.
- Déploiement progressif : le canary testing permet un processus de diffusion contrôlé, étape par étape, ce qui facilite la gestion et le suivi des changements.
- Retours rapides : avec un petit groupe d'utilisateurs, vous pouvez recueillir des retours et identifier les problèmes beaucoup plus vite qu'avec un déploiement complet.
- Suivi des performances : les tests canary vous donnent l'occasion de surveiller l'impact des nouvelles fonctionnalités ou des changements sur les performances du système avant qu'ils n'affectent tous les utilisateurs.
- Meilleure expérience utilisateur : en détectant et en corrigeant les problèmes tôt, vous garantissez une expérience plus fluide à la majorité de vos utilisateurs.
- Rentable : corriger les problèmes tôt dans le cycle de publication coûte généralement bien moins cher que de traiter des problèmes généralisés après un déploiement complet.
Quand utiliser le canary testing ?
Le canary testing n'est pas une solution universelle, mais il est particulièrement utile dans certains scénarios :
- Mises à jour à fort enjeu : lorsque vous publiez des changements majeurs susceptibles d'avoir un impact significatif sur l'expérience utilisateur ou la stabilité du système.
- Applications critiques en termes de performance : pour les systèmes où même de légères dégradations de performance pourraient avoir de graves conséquences.
- Grandes bases d'utilisateurs : plus votre base d'utilisateurs est importante, plus le canary testing est utile pour gérer les déploiements.
- Environnements de déploiement continu : le canary testing s'intègre parfaitement aux pipelines d'intégration et de déploiement continus (CI/CD), permettant des mises à jour fréquentes et à faible risque.
- Lancement de nouvelles fonctionnalités : lorsque vous ne savez pas comment les utilisateurs réagiront à une nouvelle fonctionnalité, le canary testing peut apporter des enseignements précieux.
- Changements d'infrastructure : tester d'abord à petite échelle des mises à jour ou migrations d'infrastructure majeures peut éviter des pannes généralisées.
Le canary testing est particulièrement important dans les environnements de déploiement continu. Dans ces contextes où tout va très vite et où les modifications de code sont constamment poussées en production, le canary testing joue le rôle de filet de sécurité. Il permet aux équipes de conserver des cycles de publication rapides tout en gardant un œil attentif sur la qualité et les performances.
Comment réaliser un canary testing ?
Maintenant que nous avons vu le « pourquoi » du canary testing, passons au « comment ». Voici un aperçu général du processus :
- Préparez votre version : mettez votre nouvelle version en état d'être déployée.
- Sélectionnez votre groupe canary : choisissez un petit sous-ensemble d'utilisateurs ou de serveurs qui recevra la mise à jour.
- Déployez le canary : déployez la nouvelle version auprès du groupe sélectionné.
- Surveillez et analysez : gardez un œil attentif sur les indicateurs de performance, les taux d'erreur et les retours des utilisateurs.
- Prenez une décision : en fonction des résultats, décidez de :
- Procéder à un déploiement complet
- Effectuer des ajustements et tester à nouveau
- Annuler les modifications (rollback)
- Étendre ou annuler : augmentez progressivement la taille du groupe canary ou revenez à la version précédente si des problèmes sont détectés.
- Finalisez le déploiement : une fois que vous êtes confiant dans la nouvelle version, déployez-la auprès de tous les utilisateurs.
Ce processus peut sembler simple, mais chaque étape demande beaucoup de travail. Voyons plus en détail comment fonctionne réellement le canary testing.
Comment fonctionne le canary testing ?
Le canary testing repose sur une planification rigoureuse, une mise en œuvre précise et une analyse approfondie. Voici un aperçu plus détaillé du processus :
1. Phase de planification
Avant même de penser à déployer votre canary, il faut effectuer un travail préparatoire :
- Définissez les critères de réussite : quels indicateurs utiliserez-vous pour déterminer si le canary est concluant ? Il peut s'agir des taux d'erreur, des temps de réponse, de l'engagement des utilisateurs ou d'autres indicateurs clés de performance (KPI).
- Choisissez votre groupe canary : décidez comment vous sélectionnerez les utilisateurs pour le test canary. Il peut s'agir d'une sélection aléatoire, de segments d'utilisateurs spécifiques, voire de serveurs ou de régions particuliers.
- Mettez en place la surveillance : assurez-vous de disposer d'un système de monitoring robuste pour suivre les indicateurs choisis. Des outils comme Prometheus, Grafana ou des solutions de monitoring cloud-native peuvent être utiles ici.
- Préparez les procédures de rollback : ayez toujours un plan B. Assurez-vous de pouvoir revenir rapidement à la version précédente si nécessaire.
2. Phase de mise en œuvre
Il est maintenant temps de déployer concrètement votre canary :
- Déploiement progressif : commencez par un très faible pourcentage d'utilisateurs, par exemple 1 à 5 %. Cela limite l'impact potentiel tout en fournissant des données significatives.
- Utilisez des feature flags : les feature flags vous permettent d'activer ou de désactiver des fonctionnalités pour certains utilisateurs, ce qui facilite le contrôle de votre déploiement canary.
- Surveillez de près : gardez un œil constant sur les indicateurs que vous avez définis. De nombreuses équipes configurent des tableaux de bord dédiés à cet effet.
- Recueillez les retours des utilisateurs : si possible, collectez directement les avis des utilisateurs du groupe canary. Ils peuvent fournir de précieuses données qualitatives pour compléter vos indicateurs quantitatifs.
3. Phase d'analyse
Une fois votre canary déployé en conditions réelles, il est temps d'analyser les résultats :
- Comparez les indicateurs : observez les performances de votre version canary par rapport à la version actuellement en production. Y a-t-il des différences significatives ?
- Vérifiez les erreurs : surveillez l'apparition de nouveaux types d'erreurs ou une hausse des taux d'erreur.
- Analysez le comportement des utilisateurs : les utilisateurs interagissent-ils avec la nouvelle version comme prévu ? Observez-vous des comportements inattendus ?
- Prenez une décision : sur la base de votre analyse, décidez si vous devez procéder à un déploiement plus large, effectuer des ajustements ou annuler les modifications.
N'oubliez pas que le canary testing est un processus itératif. Vous pouvez passer par plusieurs cycles de test et d'ajustement avant d'être prêt pour un déploiement complet.
Outil de test A/B gratuit
Lancez votre prochain test A/B dans les règles de l'art
Éditeur visuel, script de 15 Ko, natif GA4 et gratuit à vie jusqu'à 100 000 visiteurs mensuels. Aucun développeur requis.
Déploiement d'un test canary
Détaillons davantage le processus de déploiement d'un test canary :
Phase de planification
- Définissez les objectifs : précisez clairement ce que vous cherchez à accomplir avec cette version.
- Identifiez les risques : qu'est-ce qui pourrait mal tourner ? Réfléchissez aux points de défaillance potentiels et à leur impact éventuel sur les utilisateurs.
- Configurez vos métriques : décidez quelles métriques vous allez suivre et mettez en place les outils de suivi nécessaires.
- Choisissez votre groupe canari : déterminez comment vous sélectionnerez les utilisateurs pour le test canari. Cette sélection peut reposer sur :
- La localisation géographique
- Les caractéristiques des utilisateurs (par exemple, utilisateurs avancés ou occasionnels)
- Une sélection aléatoire
- Des bêta-testeurs volontaires
- Préparez la communication : prévoyez comment vous communiquerez avec les utilisateurs du groupe canari, surtout si vous recueillez leurs retours.
Phase de mise en œuvre
- Déployez en préproduction : avant la mise en ligne, déployez vos modifications dans un environnement de préproduction qui reproduit au mieux la production.
- Lancez les tests automatisés : assurez-vous que tous vos tests automatisés réussissent dans l'environnement de préproduction.
- Déployez sur le canari : déployez la nouvelle version auprès du groupe canari sélectionné.
- Surveillez de près : gardez un œil constant sur les indicateurs que vous avez définis. De nombreuses équipes configurent des tableaux de bord dédiés à cet effet.
- Extension progressive : si les premiers résultats sont positifs, augmentez progressivement la taille du groupe canari.
Phase d'analyse
- Comparez les métriques : observez les performances de votre version canari par rapport à la version de production actuelle.
- Analysez les retours des utilisateurs : si vous recueillez directement les retours des utilisateurs, examinez-les et classez-les par catégorie.
- Recherchez les anomalies : repérez tout comportement inattendu ou toute métrique qui sort du lot.
- Prenez une décision : sur la base de votre analyse, décidez de :
- Procéder à un déploiement complet
- Poursuivre les tests avec un groupe canari plus large
- Effectuer des ajustements et tester à nouveau
- Annuler les modifications (rollback)
- Documentez les enseignements : quel que soit le résultat, consignez ce que vous avez appris pour vos prochaines versions.
N'oubliez pas : la clé d'un test canari réussi est de commencer petit, de surveiller de près et d'être prêt à réagir rapidement en cas de problème.
Réaliser des tests canari avec des feature flags
Les feature flags (aussi appelés feature toggles) sont un outil puissant dans la boîte à outils des tests canari. Ils vous permettent d'activer ou de désactiver des fonctionnalités pour certains utilisateurs sans avoir à déployer de nouveau code.
Voici comment les feature flags peuvent améliorer vos tests canari :
- Contrôle précis : vous pouvez activer de nouvelles fonctionnalités pour des utilisateurs ou des groupes spécifiques sans affecter les autres.
- Retour arrière rapide : en cas de problème, vous pouvez désactiver une fonctionnalité instantanément sans avoir à redéployer.
- Tests A/B : les feature flags facilitent la réalisation de tests A/B en parallèle de vos tests canari.
- Déploiement par étapes : vous pouvez augmenter progressivement le nombre d'utilisateurs qui voient une nouvelle fonctionnalité en ajustant les paramètres du feature flag.
Pour utiliser les feature flags dans vos tests canari :
- Intégrez la fonctionnalité de feature flag dans votre code.
- Déployez le nouveau code en production avec la nouvelle fonctionnalité désactivée.
- Activez la fonctionnalité pour votre groupe canari grâce au feature flag.
- Surveillez et analysez comme d'habitude.
- Augmentez progressivement le pourcentage d'utilisateurs pour lesquels la fonctionnalité est activée.
Les feature flags peuvent rendre votre processus de test canari plus flexible et moins risqué. C'est une technique utilisée par de nombreuses grandes entreprises technologiques pour gérer leurs processus de déploiement complexes.
Les avantages des tests canari
Les tests canari offrent de nombreux avantages :
- Réduction des risques : en limitant les nouvelles versions à un petit groupe, vous réduisez l'impact potentiel des bugs ou des problèmes de performance.
- Détection précoce : les problèmes peuvent être repérés et corrigés avant d'affecter l'ensemble de vos utilisateurs.
- Validation en conditions réelles : les tests canari montrent comment vos modifications se comportent dans de véritables environnements de production.
- Déploiement progressif : vous pouvez monter en charge lentement lors de la mise en production, ce qui vous donne plus de contrôle sur le processus.
- Meilleure expérience utilisateur : en détectant et en corrigeant les problèmes dès le départ, vous garantissez une expérience plus fluide à la majorité des utilisateurs.
- Économique : corriger les problèmes en début de cycle de publication coûte généralement bien moins cher que de traiter des incidents à grande échelle.
- Renforcement de la confiance : des tests canary réussis peuvent renforcer la confiance des équipes dans leurs déploiements.
- Analyse des performances : les tests canary peuvent révéler l'impact de nouvelles fonctionnalités ou de modifications sur les performances du système.
- Retours des utilisateurs : vous pouvez recueillir de précieux retours d'utilisateurs réels avant un déploiement complet.
- Compatible avec le déploiement continu : les tests canary s'intègrent parfaitement aux pratiques CI/CD et permettent des mises à jour fréquentes et à faible risque.
Les défis des tests canary
Bien que puissants, les tests canary ne sont pas sans défis :
- Complexité : la mise en place et la gestion des tests canary peuvent être complexes, surtout dans les grands systèmes.
- Gourmand en ressources : les tests canary nécessitent une infrastructure et des ressources de supervision supplémentaires.
- Risque de biais : s'ils ne sont pas conçus avec soin, les groupes canary peuvent ne pas être représentatifs de l'ensemble de vos utilisateurs.
- Déploiement plus lent : la nature progressive des tests canary peut ralentir le processus de publication.
- Faux positifs/négatifs : de petits échantillons peuvent parfois conduire à des résultats trompeurs.
- Confusion des utilisateurs : les utilisateurs du groupe canary peuvent constater des incohérences ou des changements fréquents.
- Charge opérationnelle accrue : gérer plusieurs versions en production peut s'avérer difficile.
- Cohérence des données : garantir la cohérence des données entre les différentes versions peut être délicat.
- Défis de supervision : il peut être difficile de mettre en place un suivi qui mesure avec précision l'impact des changements.
- Prise de décision : interpréter les résultats des tests canary et décider du moment où lancer un déploiement complet peut être difficile.
Malgré ces défis, de nombreuses équipes estiment que les avantages des tests canary l'emportent largement sur les inconvénients.
Outil de test A/B gratuit
Lancez votre prochain test A/B dans les règles de l'art
Éditeur visuel, script de 15 Ko, natif GA4 et gratuit à vie jusqu'à 100 000 visiteurs mensuels. Aucun développeur requis.
Qu'est-ce qu'une canary release ?
Une canary release est une version spécifique de votre logiciel, diffusée auprès d'un petit sous-ensemble d'utilisateurs dans le cadre du processus de test canary. C'est comme un éclaireur envoyé explorer un nouveau territoire avant que le gros du groupe ne suive.
Une canary release a pour objectif de :
- Tester de nouvelles fonctionnalités ou des modifications dans un véritable environnement de production
- Recueillir des données de performance et des retours d'utilisateurs
- Identifier les problèmes potentiels avant qu'ils n'affectent tous les utilisateurs
- Permettre un déploiement progressif et maîtrisé des changements
Les canary releases peuvent être mises en œuvre différemment selon qu'il s'agit d'applications web ou mobiles :
Canary releases pour le web
Pour les applications web, les canary releases consistent souvent à :
- Déployer la nouvelle version sur un petit sous-ensemble de serveurs
- Rediriger un pourcentage du trafic vers ces serveurs
- Augmenter progressivement le trafic vers la nouvelle version si aucun problème n'est détecté
Cette approche permet des retours en arrière rapides : il suffit de rediriger le trafic vers l'ancienne version en cas de problème.
Canary releases pour le mobile
Les canary releases mobiles sont un peu plus délicates en raison du fonctionnement des app stores. Les stratégies possibles incluent :
- Utiliser des feature flags intégrés à l'application pour contrôler l'accès aux nouvelles fonctionnalités
- Diffuser des versions bêta via TestFlight (iOS) ou Google Play Beta Testing
- Déployer progressivement les mises à jour auprès d'un pourcentage d'utilisateurs via l'app store
Les canary releases mobiles demandent souvent plus de planification et peuvent être plus lentes à mettre en œuvre en raison des processus d'approbation des app stores.
Faut-il exécuter vos tests automatisés avant les tests canary ?
Absolument ! Exécuter des tests automatisés avant le canary testing est essentiel. Voici pourquoi :
- Détecter les bugs évidents : les tests automatisés peuvent repérer de nombreux problèmes avant même qu'ils n'atteignent les utilisateurs réels.
- Performance de référence : les tests automatisés fournissent une base de référence en matière de performance, à comparer aux résultats du canary.
- Gain de confiance : la réussite des tests automatisés donne à l'équipe plus de confiance dans la version canary.
- Gain de temps et de ressources : il est bien moins coûteux et bien plus rapide de corriger les problèmes détectés par des tests automatisés que ceux découverts en production.
- Un complément du canary testing : les tests automatisés et le canary testing fonctionnent ensemble pour offrir une assurance qualité complète.
Si le canary testing est idéal pour détecter les problèmes en conditions réelles, il ne doit pas être votre première ligne de défense. Une suite solide de tests automatisés doit toujours être exécutée avant que du code n'atteigne la production, y compris dans une version canary.
Il faut noter que le canary testing est souvent utilisé en complément d'autres stratégies de test, comme les tests A/B. Alors que les tests A/B visent à comparer deux versions pour savoir laquelle est la plus performante (souvent selon des indicateurs business), le canary testing sert surtout à déployer les changements en toute sécurité et à détecter d'éventuels problèmes.
Dans l'univers du DevOps, où l'objectif est de raccourcir le cycle de développement et d'assurer une livraison continue, le canary testing joue un rôle essentiel. Il permet aux équipes de maintenir des cycles de publication rapides tout en garantissant qualité et stabilité.
Utiliser un outil d'automatisation des tests pour exécuter les tests automatisés avant le canary testing
Pour tirer le meilleur parti de vos tests automatisés avant les versions canary, envisagez d'utiliser un outil d'automatisation des tests robuste. Ces outils peuvent vous aider à créer, gérer et exécuter vos tests plus efficacement.
Testsigma est un exemple de ce type d'outil. Testsigma est un outil d'automatisation des tests piloté par l'IA qui vous permet de créer et d'exécuter des tests sur les plateformes web, mobiles et API. Il propose notamment :
- Création de tests sans code
- Tests multi-navigateurs et multi-appareils
- Intégration CI/CD
- Maintenance des tests assistée par l'IA
Testsigma n'est qu'une option parmi d'autres : il existe de nombreux autres excellents outils d'automatisation des tests. L'essentiel est d'en trouver un qui s'intègre bien à votre processus de développement et qui facilite l'exécution de tests complets avant vos versions canary.
N'oubliez pas : l'objectif est de détecter le plus grand nombre de problèmes possible avant qu'ils n'atteignent même vos utilisateurs canary. Un bon outil d'automatisation des tests peut vous y aider.
Conclusion
Le canary testing est une technique puissante pour réduire les risques et garantir la qualité des déploiements logiciels. En déployant progressivement les changements auprès d'un petit sous-ensemble d'utilisateurs, les équipes peuvent détecter rapidement les problèmes potentiels et prendre des décisions fondées sur les données pour des déploiements plus larges.
Même s'il présente certains défis, les avantages du canary testing l'emportent souvent largement sur les inconvénients. Il permet de valider les changements en conditions réelles, soutient les pratiques de déploiement continu et conduit, au final, à une meilleure expérience utilisateur.
À mesure que les systèmes logiciels gagnent en complexité et que les attentes des utilisateurs continuent de croître, des techniques comme le canary testing deviendront de plus en plus importantes. Que vous gériez une petite application web ou un système distribué à grande échelle, pensez à intégrer le canary testing à votre stratégie de déploiement. Vos utilisateurs (et votre niveau de stress) vous en remercieront !
Outil de test A/B gratuit
Lancez votre prochain test A/B dans les règles de l'art
Éditeur visuel, script de 15 Ko, natif GA4 et gratuit à vie jusqu'à 100 000 visiteurs mensuels. Aucun développeur requis.
Questions fréquentes
Q : Quels sont les avantages d'une version canary ?
R : Les versions canary offrent plusieurs avantages :
- Réduction du risque de problèmes généralisés
- Détection précoce des problèmes dans un véritable environnement de production
- Possibilité de recueillir les retours d'utilisateurs réels avant le déploiement complet
- Déploiement progressif des changements, pour un meilleur contrôle
- Amélioration de l'expérience utilisateur globale grâce à la détection précoce des problèmes
- Prise en charge des pratiques de déploiement continu
Q : Pourquoi parle-t-on de canary testing ?
R : Le terme « canary testing » vient d'une ancienne pratique minière. Les mineurs emmenaient des canaris dans les mines de charbon comme système d'alerte précoce contre les gaz dangereux. Si le canari cessait de chanter ou mourait, c'était le signal pour les mineurs d'évacuer. De la même manière, en développement logiciel, les tests canary servent de système d'alerte précoce pour détecter d'éventuels problèmes dans les nouvelles versions.