Service de gestion
des Feature Flags
en open source

FeatBit, un service de gestion de Feature Flags rapide, évolutif et open source. La solution idéale pour l'auto-hébergement.

Innovate Your Software Faster without Risk

A Fast, Scalable, and Open-source Feature Flags Management Service. For Cloud & Self-hosting.

Comment mettre en œuvre les feature flags

Last updated date:

Cet article a été écrit par LifeCycle. Pour plus d'informations, consultez la version anglaise.

Les feature flags, également connus sous le nom de commutateurs de fonctionnalités, sont devenus un outil essentiel pour le développement de logiciels modernes. Ils permettent aux développeurs de contrôler le déploiement de nouvelles fonctionnalités et mises à jour de manière flexible et maîtrisée. Dans cet article de blog, nous allons explorer ce que sont les feature flags, leurs cas d'utilisation classiques et modernes, et comment les mettre en œuvre efficacement dans les applications front-end, mobiles et côté serveur. Nous examinerons également le concept de tests A/B de design superposé et comment les feature flags jouent un rôle crucial dans la création d'expérimentations robustes.

Cas d'utilisation classiques : Diminuez les risques de vos déploiements

  1. Tests en production : Les feature flags vous permettent de tester de nouvelles fonctionnalités dans un environnement de production sans les exposer à tous les utilisateurs. Cela réduit le risque associé au code non testé.
  2. Release Canary : Déployez progressivement de nouvelles fonctionnalités à un sous-ensemble d'utilisateurs avant de les rendre disponibles à tous, assurant ainsi un déploiement plus en douceur.
  3. Liste d'autorisation/blocage : Contrôlez l'accès aux fonctionnalités pour des utilisateurs ou groupes spécifiques, offrant une gestion précise des permissions.
  4. Tests bêta : Invitez un groupe sélectionné d'utilisateurs à tester de nouvelles fonctionnalités, recueillant des retours avant une sortie complète.

Cas d'utilisation modernes : SRE et Croissance

  1. Observabilité : Obtenez des informations sur l'utilisation des fonctionnalités, la performance et le comportement des utilisateurs grâce aux données et analyses des feature flags. Cela permet au système de déclencher automatiquement une opération de rollback de fonctionnalité au premier signe de problème. Pour plus d'informations, vous pouvez consulter la documentation d'intégration de DataDog avec FeatBit](https://docs.featbit.co/integrations/datadog) ou l'article de blog 《Utilisation des feature flags et des outils d'observabilité pour la migration graduelle des bases de données
  1. Expérimentation : Mettez en œuvre des feature flags pour tester en A/B de nouvelles idées, collecter des données et prendre des décisions fondées sur les données concernant l'efficacité des fonctionnalités. Les feature flags offrent une solution plus flexible pour répondre aux exigences de répartition du trafic dans un design expérimental complexe, tel que le Layering Orthogonal, l'Exclusivité Mutuelle, etc. Vous pouvez combiner un outil de drapeau de fonctionnalité avec votre outil d'analyse de données pour créer un système d'expérimentation plus performant plutôt que d'acheter un service de test A/B tiers coûteux.
  2. Monétisation logicielle : Utilisez des feature flags pour contrôler l'accès aux fonctionnalités premium, aux abonnements ou à d'autres stratégies de monétisation. Cela vous permet d'adapter votre modèle de tarification et vos offres en fonction du comportement des utilisateurs et de leurs retours. Vous pouvez lire l'article suivant pour obtenir un exemple concret, 《Workflow Sentinel EMS avec des plateformes de gestion des feature flags
  3. Et ainsi de suite.

Standardisation avec OpenFeature

La tendance dans l'implémentation des feature flags est de standardiser avec des solutions telles que OpenFeature qui fournissent des SDK et des modèles pour simplifier le processus. La standardisation est bénéfique pour deux raisons :

  1. Éviter le verrouillage par un fournisseur : De nombreux outils de feature flags tiers prennent désormais en charge la norme SDK OpenFeature, réduisant ainsi le risque de dépendance à un fournisseur et vous offrant plus de flexibilité.
  2. Interfaces essentielles : OpenFeature propose des interfaces essentielles pour vous aider à construire un SDK de feature flags robuste. Ces interfaces assurent le respect des meilleures pratiques et la cohérence.

Implémentation de feature flags à travers la pile

Un drapeau de fonctionnalité peut être implémenté dans toutes vos applications logicielles : applications Web et mobiles, services backend, algorithmes, etc. Voici un exemple d'utilisation d'un drapeau de fonctionnalité à travers un projet entier. Supposons que vous ayez une nouvelle méthode pour indiquer aux utilisateurs quand acheter des actions Google. La nouvelle version change l'interface utilisateur, la source de données backend et l'algorithme de calcul, vous devez donc maintenir la cohérence sur toutes les pages pour le même utilisateur.

Vous pouvez créer un ou plusieurs feature flags pour contrôler le déploiement de la nouvelle version. Ici, nous allons créer un seul drapeau de fonctionnalité booléen pour contrôler le déploiement d'une nouvelle fonctionnalité. Tout d'abord, nous allons créer un drapeau de fonctionnalité appelé « L'Art d'Acheter des Actions ». La figure ci-dessous montre à quoi ressemble un drapeau de fonctionnalité dans l'interface utilisateur de FeatBit.

Examinons ensuite comment nous implémentons ce drapeau de fonctionnalité dans nos applications frontales et backend.

Supposons que vous ayez une interface utilisateur qui suggère quand acheter des actions Microsoft. Vous avez deux composants, chacun présentant une vue d'interface utilisateur différente pour une version différente de « L'Art d'Acheter des Actions ». Vous utilisez un drapeau de fonctionnalité pour contrôler quel composant est affiché. Voici un exemple en code Vue.js (si vous utilisez le drapeau de fonctionnalité avec React, vous devrez simplement modifier le code pour l'adapter au style React) :

Pour que l'utilisateur voie la même interface utilisateur dans l'application Web et l'application mobile, vous devriez également implémenter ce type de fonctionnalité dans votre application mobile. Supposons que la nouvelle méthode (m2) nécessite de lire des données supplémentaires différentes de m1. Vous avez maintenant plusieurs façons de l'implémenter. Voici mes méthodes préférées (l'une ou l'autre) :

  • Ajouter un drapeau de fonctionnalité qui enveloppe et contrôle les différentes fonctions de récupération de données dans sa fonction parente. Mais cela ajoute du travail supplémentaire pour nettoyer le drapeau de fonction dans le code frontal et backend.
  • Ajouter une nouvelle API pour la nouvelle méthode (m2), ainsi nous n'avons plus besoin d'ajouter un drapeau de fonctionnalité dans le backend. Mais :
    • Ajouter une nouvelle API peut entraîner un travail supplémentaire pour la passerelle API.
    • Vous devrez supprimer l'API entière lorsque vous opterez définitivement pour la nouvelle méthode. Voici un exemple en ASP.NET Core. Si le drapeau de fonctionnalité retourne "m2", le programme récupérera la source de données en utilisant la fonction "RetrieveDataFromFeatBiDB()".

Après avoir implémenté le code dans votre application, la seule chose restante est de contrôler et de déployer la fonctionnalité dans l'interface utilisateur. Comme le montre la figure ci-dessous, vous pouvez définir une règle personnalisée pour déployer les nouvelles méthodes uniquement auprès des utilisateurs résidant en Californie. Pour minimiser le risque potentiel, vous pouvez limiter le rayon d'action à seulement 10 % des utilisateurs. (Ceci est également appelé déploiement progressif)

Élaboration de tests A/B de design superposé robustes

Les tests A/B de design superposé impliquent de mener plusieurs expériences en même temps, où les utilisateurs peuvent faire partie de plusieurs expériences à la fois. Un service de feature flags robuste doit répondre aux exigences suivantes :

  1. Capable de créer des couches orthogonales pour empiler les tests de manière indépendante et non superposée. Chaque variation reste isolée, simplifiant l'analyse et minimisant les conflits et conséquences non intentionnelles.
  2. Il doit être capable d'éviter les conflits, il est essentiel de rendre les paramètres mutuellement exclusifs. Les feature flags sont essentiels pour atteindre cet objectif, permettant un contrôle précis sur les utilisateurs qui vivent des variations ou des changements spécifiques.
  3. Capable de diviser votre base d'utilisateurs en groupes distincts basés sur des attributs ou comportements pertinents. Cela vous permet de mener des expériences sur des segments d'utilisateurs spécifiques, offrant des aperçus sur l'impact des changements sur différents groupes.
  4. Et ainsi de suite.

De nombreux outils de feature flags ont tenté de fournir des fonctionnalités pour soutenir cela. FeatBit est une excellente solution open source pour atteindre cet objectif. La figure ci-dessous montre comment FeatBit améliore la conception de test A/B avec des couches orthogonales et des feature flags de division mutuellement exclusive dans une seule couche.

Outils Open Source de feature flags

J'ai précédemment écrit un autre article sur les outils, lisez l'article 《Meilleurs outils Open Source de feature flags gratuits》.

Conclusion

Les feature flags sont un composant critique du développement logiciel moderne, vous permettant de dérisquer les déploiements, de mener des expériences et de maintenir une stratégie de sortie flexible. En standardisant avec des solutions comme OpenFeature et en mettant en œuvre des feature flags de manière cohérente à travers votre pile, vous pouvez atteindre une approche robuste et adaptable du développement et des tests logiciels. Embrassez la puissance des feature flags pour construire de meilleurs produits et prendre des décisions basées sur les données.




Articles connexes :

Outils Open Source de feature flags Flagsmith vs. Unleash : Quel outil Open Source de feature flags l'emporte en 2023 ?