Qu’est-ce qu’un « feature flag
Un feature flag (encore appelés « feature toggle », « feature switch » ou « feature flagging ») permet l'exécution conditionnelle du code d'un site ou d'une application pour activer ou désactiver une fonctionnalité.
Les feature flags sont des outils de gestion des fonctionnalités qui permettent aux utilisateurs de tester et de déployer des fonctionnalités selon des règles de delivery précises, notamment :
- “Déploiement progressif” ou“Progressive delivery” : une nouvelle fonctionnalité est lancée uniquement auprès d’un faible pourcentage d’utilisateurs afin de tester et de comprendre les effets de la mise à jour avant d’être déployée à l’ensemble des utilisateurs.
- “Déploiement ciblé" ou “Targeted Delivery” : les fonctionnalités sont déployées uniquement aux utilisateurs qui partagent des caractéristiques communes (C’est-à-dire qui appartiennent à un même segment, comme les Early Adopters, les testeurs internes ou les utilisateurs premium).
- Feature experimentation : lancement de différentes versions d’une fonctionnalité pour déterminer celle qui donne les meilleurs résultats.
Les feature flags sont essentiels pour les équipes DevOps qui les utilisent souvent dans une approche CI/CD (Continous Integration/Continuous Delivery). Les Product Managers y ont recours pour tester des changements et valider ou non leur pertinence sans impacter l'expérience de l'ensemble des utilisateurs.
À quoi servent les feature flags ?
Les feature flags reposent sur une structure conditionnelle qui détermine le code à exécuter en fonction d’une série de règles.
Ils permettent de contrôler la visibilité et l’accessibilité d’une nouvelle fonctionnalité produit pour tout ou partie des utilisateurs. Il est ainsi possible de déployer des fonctionnalités, même si elles sont encore en production.
Grâce au feature flagging, on peut dissocier le déploiement d’une nouvelle fonctionnalité des releases produit.
Qui a recours aux feature flags ?
La configuration de feature flags a souvent été réservée aux développeurs en raison de leur intégration au code. En général, ceux-ci utilisent les flags booléens, c'est-à-dire une simple activation ou désactivation de fonctionnalité. Seules les valeurs « vrai » ou « faux » sont admises avec une complexité standard.
Désormais, grâce au feature management, les Product Managers peuvent également contrôler les releases, mettre à jour les feature flags, et même réaliser des tests produit. Les développeurs continuent de déployer et d’agir sur le code, mais les équipes produits peuvent décider quels utilisateurs seront impactés et à quel moment les changements seront visibles. Elles peuvent ainsi agir en autonomie grâce aux feature flags.
Avec le feature flagging :
- L’équipe DevOps configure des feature flags pour une utilisation par l’équipe produit.
- L’équipe produit déploie progressivement les fonctionnalités, réalise des tests et y donne accès à différents segments d’utilisateurs à des fins de tests ou pour recueillir leurs impressions.
- L’équipe QA utilise les feature flags pour tester les fonctionnalités durant la phase de production, les valide en interne, puis les met à la disposition d’un public bien défini en production. Le déploiement par feature flags facilite également le rollback en cas de problème.
Du fait de leur utilisation par des équipes très différentes, il est plus facile de gérer des features flags sur un seul et même outil, adapté à tous les besoins.
Quels sont les avantages du feature flagging ?
Les équipes développement et produit utilisent le feature flagging pour de nombreuses raisons :
PLUS DE SÉCURITÉ
Déployer de nouvelles fonctionnalités à l’ensemble des utilisateurs n’est pas sans risques : des bugs peuvent affecter le fonctionnement du produit et nuire à l’expérience utilisateur.
Sans cette option d’activation/désactivation, toute erreur impliquerait un rollback complet, une opération potentiellement coûteuse et chronophage.
Les feature flags permettent aux équipes de lancer progressivement une fonctionnalité, en commençant par un segment d’utilisateurs réduit et de confiance, avant d’élargir le lancement à l’ensemble des utilisateurs. Les équipes peuvent même choisir de tester différentes versions d’une fonctionnalité pour valider les hypothèses produit et réduire le risque de proposer une fonctionnalité non désirée ou bancale aux utilisateurs.
PLUS DE MAÎTRISE
Sans feature flags, les équipes produit n’ont que peu ou pas la main sur les utilisateurs qui voient les fonctionnalités et le moment où elles peuvent les voir.
Avec le feature flagging, les Product Managers peuvent mieux piloter le lancement des fonctionnalités :
- en affichant ou masquant facilement les nouvelles fonctionnalités ;
- en pratiquant un déploiement progressif pour les nouvelles fonctionnalités ;
- en déployant la variante d’une fonctionnalité à un sous-groupe d’utilisateurs ;
- en testant de nouvelles fonctionnalités.
PLUS D’EFFICACITÉ ET DE FLEXIBILITÉ
Grâce aux feature flags, les équipes peuvent dissocier le lancement de fonctionnalités du déploiement du code. Cette flexibilité permet d’augmenter la productivité des développeurs qui bénéficient d’un environnement plus agile.
Un lancement plus rapide des fonctionnalités par les développeurs signifie plus de valeur pour les utilisateurs, ce qui permet de fidéliser davantage la clientèle et d’améliorer la Customer Lifetime Value (CLV), tout en réduisant le coût d’acquisition au fil du temps.
PLUS DE RENTABILITÉ
Concevoir une mauvaise fonctionnalité ou en déployer une défectueuse peut s’avérer coûteux.
Les feature flags permettent d’économiser des rollbacks importants, ou le lancement d’une fonctionnalité jugée inutile, donc rejetée par les utilisateurs.
Lorsque les fonctionnalités sont présentées d’abord à un petit nombre d’utilisateurs, il est plus facile de détecter les erreurs et de les corriger rapidement.
Feature flags : cas d’usages
Voici comment les feature flags sont utilisés le plus souvent :
1. KILL SWITCHES (bouton activer/désactiver)
Lorsque des fonctionnalités sont associées à des feature flags, chacune d’elles peut être facilement modifiée, activée ou désactivée en temps réel, sans aucun effet sur le reste de la production.
Il est également possible de désactiver une fonctionnalité à l’aide d’un bouton d’arrêt d’urgence de type « kill switch », si l’activation crée des problèmes. Le « kill switch » est un interrupteur à activer ou désactiver une fonctionnalité chaque fois qu’un problème est détecté. C’est l'une des utilisations les plus courantes du feature flagging.
Grâce à cette option, les modifications peuvent être appliquées immédiatement, sans avoir à modifier les règles de ciblage ou à réaliser des redéploiements.
Les Product Managers peuvent gérer en toute autonomie l'activation de la fonctionnalité auprès des utilisateurs et appliquer des changements sans solliciter les développeurs.
2. MIGRATIONS
La migration de données ou la modification de l’infrastructure backend se fait souvent en plusieurs étapes fastidieuses.
Les feature flags permettent aux développeurs de préparer toutes leurs évolutions à l’avance et de les laisser inactives. Lorsque le backend est prêt, ils peuvent activer les feature flags et implémenter le nouveau code dans l’ordre souhaité. En cas de bug, ils peuvent désactiver la fonctionnalité et revenir à la configuration précédente.
Le feature flagging facilite les migrations en plusieurs étapes et permet d’effectuer des évolutions de façon fluide, en évitant les redondances et les recoupements de code ou de structure.
3. REFONTE DU CODE
Les équipes de développement qui travaillent en intégration ou en “delivery” continue rencontrent parfois des problèmes de codage complexes. Les feature flags peuvent les aider à isoler les séquences de code fiable des autres séquences sur lesquelles elles travaillent.
Au lieu de déployer toutes les évolutions de code d’un seul coup, les équipes DevOps peuvent activer des petites parties de code à l’aide des feature flags dès qu’elles sont considérées comme stables.
4. LA FEATURE EXPERIMENTATION
Après cela, vient naturellement l’étape de la Feature Experimentation. Là encore, les feature flags y jouent un rôle important. Avec le feature flagging, il est possible de tester différentes versions d’une nouvelle fonctionnalité auprès des utilisateurs. Les Product Managers pourront ensuite en évaluer les performances en fonction des KPI et des goals définis.
Grâce au reporting in-app de leur outil de Feature Experimentation les Product managers :
- évaluent les taux d’adoption pour comprendre quelle variation d’une fonctionnalité est la mieux acceptée par les utilisateurs ;
- observent les effets des changements du produit sur les conversions, l’utilisation ainsi que d’autres KPIs sous forme d’objectifs personnalisés.
Il est ainsi possible de tester, itérer et modifier rapidement les fonctionnalités sans spéculation hasardeuse sur celles qui performent le mieux auprès des utilisateurs.
5. DES MISES EN PRODUCTION CONTRÔLÉES
Les feature flags sont particulièrement utiles au moment des releases produits : ils peuvent être configurés pour assurer un lancement des fonctionnalités discret, en commençant par un segment d’utilisateurs réduit avant d’élargir la release à l’ensemble des utilisateurs.
Déploiement progressif
Les Product Managers peuvent configurer des règles pour activer progressivement les fonctionnalités sur une période donnée pour l’ensemble ou une partie des utilisateurs. Cette méthode est appelée “progressive delivery” ou “Déploiement progressif”.
Elle permet aux Product Managers :
- d’être plus agiles lors du lancement d'une nouvelle fonctionnalité ;
- de lancer une fonctionnalité en plusieurs étapes ;
- de recueillir des impressions en interne ou en externe et d'apporter rapidement des correctifs ;
- de décider plus rapidement s’il convient d’itérer la fonctionnalité ou de l’abandonner.
Déploiement ciblé
Les Product Managers peuvent cibler un sous-ensemble d’utilisateurs, voire un petit pourcentage de ce sous-groupe, à qui ils activeront un feature flag. Cette méthode est qualifiée de “Targeted delivery” ou “déploiement ciblé”.
Elle donne aux Product Managers la possibilité :
- de contrôler le segment d’utilisateurs qui verra la fonctionnalité ;
- d’avoir des retours internes ou externes et d'apporter rapidement des correctifs avant de généraliser son lancement ;
- de valider la qualité d'une fonctionnalité et s'assurer qu'elle ne comporte pas de bugs bloquants, avant un déploiement général fluide et maîtrisé.
Mise en production « Canary »
Les déploiements ciblés sont parfois qualifiés de "canary release", à l'image du canari qui était autrefois utilisé dans les mines comme cobaye pour détecter la présence de gaz toxiques , et ainsi sauver la vie des mineurs.
Généralement, dans cette configuration, une copie mise à jour d’une application est créée et un petit pourcentage d’utilisateurs en bénéficie. Une fois que le test « canary » est concluant, le code mis à jour est déployé dans l’environnement de production pour que tous les utilisateurs y aient accès.
Cette méthode est rendue possible grâce aux feature flags.
Les versions Canary sont une variante du déploiement ciblé : ils visent tout particulièrement à tester l’impact des mises à jour, là où le déploiement ciblé entend proposer une version différente d’une fonctionnalité à plusieurs segments d’utilisateurs.
Comment implémenter les feature flags ?
Il existe plusieurs manières de mettre en place des feature flags.
MOBILISER LES DÉVELOPPEURS
Les développeurs peuvent coder les feature flags directement dans le codebase. Cette option a longtemps été la seule méthode.
Toutefois, se reposer uniquement sur le temps et les ressources des développeurs présente de nombreux inconvénients. Cette approche demande des investissements importants et n’est pas un levier de croissance durable.
L’UTILISATION D’UNE SOLUTION DE FEATURE MANAGEMENT
Une bonne solution de feature management peut considérablement soulager la charge de travail des DevOps en termes de conception de suivi et de gestion du code lié aux feature flags.
Grâce à ce type d’outil, les développeurs peuvent se concentrer sur le codage des fonctionnalités et de leurs variations. Les Product Managers peuvent ensuite prendre le relais et créer autant de variantes que nécessaire pour leurs tests, sans avoir à solliciter les développeurs.
Il existe un grand nombre de solutions : de la plateforme exclusivement dédiée au Feature Management à la solution d’expérimentation full stack offrant à la fois des fonctionnalités de feature flagging et de testing server-side.
Une solution avancée de feature flagging doit offrir à ses utilisateurs :
- une bibliothèque de SDK exhaustive ;
- la possibilité de créer à la fois des variables et des variations de fonctionnalités ;
- la capacité de lancer des tests mobile app ;
- des reportings approfondis ;
- un système de monitoring et d’alerte en temps réel.
Toutes ces options permettront aux Product Managers d’implémenter facilement leurs feature flags et de tester leurs fonctionnalités produit sans passer par les développeurs.
Quelles sont les bonnes pratiques en matière de feature flags
Vous envisagez de vous mettre au feature flagging ? Gardez à l’esprit ces quelques bonnes pratiques.
METTEZ EN PLACE UNE NOMENCLATURE STANDARD
Lorsque de nombreuses personnes d’une même équipe utilisent des features flags à des fins diverses, leur gestion peut rapidement s'avérer fastidieuse.
Il convient donc de mettre en place une nomenclature standard dès le début. Chaque feature flag peut avoir sa propre nomenclature, syntaxe et organisation.
Une nomenclature standard :
- réduit les risques de mettre en œuvre un feature flag erroné ;
- facilite la suppression et les processus de vérification des feature flags ;
- facilite la compréhension rapide de leur fonction ;
- uniformise les opérations de l’équipe de production ;
- permet un suivi rapproché des systèmes avec des alertes en temps réel.
SUPPRIMEZ LES FEATURE FLAGS OBSOLÈTES
La suppression des feature flags obsolètes fait partie des meilleures pratiques à adopter dès le début pour éviter d’accumuler une dette technique.
Les dettes techniques sont la conséquence de raccourcis et de décisions hasardeuses favorisant le court terme. Un excès de dette technique peut impacter négativement les résultats et, à terme, nuire à la productivité globale. C’est pourquoi il convient de vérifier tous les feature flags et d’en supprimer autant que possible lorsque l’on en introduit un.
UTILISEZ UN OUTIL DE FEATURE MANAGEMENT
Suivre un grand nombre de feature flags manuellement, par le biais notamment de commentaires dans le code, n’est pas la solution la plus efficace.
L’utilisation d’un outil de feature management peut permettre d’automatiser cette tâche chronophage, d’indiquer où se trouvent les feature flags dans le code et de trouver des informations sur leur fonctionnement.
Les feature flags et la feature experimentation
La feature experimentation consiste à utiliser les feature flags pour tester différentes versions de la même fonctionnalité et mesurer l’impact de chaque variation par rapport aux objectifs business. Elle permet aux équipes d’adopter une approche étayée par des données pour le développement d’un produit, et permet d’innover en toute sécurité.
Elle peut être utilisée pour :
- valider des hypothèses selon une méthode scientifique : vérifier
- que le produit est conforme aux objectifs commerciaux et fonctionne comme prévu ;
- valider l’orientation et la qualité du produit : vérifier que le produit répond aux attentes des utilisateurs et aux normes ;
- évaluer l’impact d’une fonctionnalité sur le fonctionnement du produit : comprendre comment le produit influe sur le
- fonctionnement global de l’entreprise ;
- repérer et se concentrer sur la variante qui a le plus d’effet : sur l’ensemble des versions testées, déterminer celle qui a le plus de répercussions et donne les meilleurs résultats pour l’entreprise
Pour en savoir plus, consultez notre guide complet du feature management.
Utilisez Kameleoon pour gérer vos feature flags
La solution Full Stack Experimentation de Kameleoon vous permet de gérer et d’implémenter vos feature flags en toute simplicité et sécurité.
Kameleoon est la seule solution d’optimisation qui offre des fonctionnalités d’A/B testing, de personnalisation IA et de feature management sur une plateforme unique. Les équipes marketing et produit peuvent travailler ensemble sur une seule et même plateforme, dans l’environnement de leur choix.
Si le marketing gère l’acquisition des clients et le produit sous-tend la fidélisation et la monétisation, il est essentiel d'avoir une vision unique de l’expérience client de bout en bout (et, cela va sans dire, d’une seule source fiable de données.)
Bien entendu, une seule plateforme facilite également la collaboration entre les équipes produit et DevOps. Grâce aux outils de feature management et des feature flags, les Product Managers n’ont plus besoin de demander aux développeurs de coder manuellement toutes les versions d’une fonctionnalité. Ils peuvent facilement gérer et configurer leurs feature flags depuis une interface intuitive.
Avec Kameleoon, les Product Managers peuvent :
- Configurer un flag, choisir son mode et son calendrier de déploiement grâce aux options avancées de planification et configurer des alertes pour le rollback de certaines fonctionnalités qui n'atteindraient pas leurs objectifs de performance.
- Consulter et filtrer les feature flags sur un dashboard unique
Les feature flags ne sont plus seulement dédiés aux développeurs : ils sont désormais nécessaires à toute équipe produit qui souhaite améliorer sa performance.
Vous recherchez une solution de feature flagging ? Demandez une démo pour voir en action toutes les options de feature management de la plateforme Kameleoon.
Un feature flag est un outil qui permet aux équipes produit et devops de contrôler le déploiement des nouvelles fonctionnalités. Il sert à activer ou à désactiver des fonctionnalités sans avoir à redéployer la totalité d’une application ou d’un site web.
Les feature flags sont utilisés pour réduire les risques et la complexité liés au déploiement de nouvelles fonctionnalités. Ils permettent aux équipes produit de tester et de déployer des changements en toute sécurité, ainsi que d'ajouter des fonctionnalités sans affecter l'expérience utilisateur.
Développés directement dans le code, les feature flags permettent de gérer l’exécution du code et d’activer ou de désactiver la fonctionnalité à laquelle ils sont rattachés à la manière d’un interrupteur.
Les Feature Flags sont généralement utilisés par les marques digitales dont l’activité s'articule principalement autour d’interfaces web ou mobile (site web ou app). Ils sont mis en place par les équipes produits et codés par des développeurs.
Les Feature Flags sont utilisés dans le cadre du Feature Management : une méthode clé pour lancer de nouvelles fonctionnalités en toute sécurité et sans impacter l’expérience utilisateur.
Les feature flags sont des lignes de code ajoutées directement dans le script de la fonctionnalité. Il existe plusieurs manières de les mettre en place :
L’ajout de feature flags par les développeurs eux-mêmes dans le codebase.
L’utilisation d’une solution avec des capacités de feature management.
Cette dernière permet aux Product Managers de concevoir et gérer les feature flags en toute autonomie, sans devoir solliciter les développeurs.
Les feature flags permettent d’activer et désactiver une fonctionnalité pour un groupe ou tous les utilisateurs. Le Feature Management est la méthode utilisée pour déployer une fonctionnalité à un échantillon de l’audience puis de procéder par itérations pour l’améliorer. La Feature Experimentation est une étape avancée du Feature Management qui consiste à tester la nouvelle fonctionnalité auprès d’une partie définie des utilisateurs pour analyser ses performances avant de la rendre disponible à tous. Le feature flagging est un outil du Feature Management et de la Feature Experimentation.
Pour implémenter et gérer ses feature flags, il est recommandé d’utiliser une solution de Feature Management. Celle-ci facilite leur suivi et leur contrôle et permet de supprimer facilement les éléments obsolètes. Il en existe deux sortes : les outils de Feature Management pure players qui proposent de l’expérimentation (LaunchDarkly, Split.io…) et les outils d’expérimentation qui proposent du Feature Management, de la Feature Experimentation et du feature flagging (Kameleoon, Optimizely…).