Feature Flags / Feature Toggles

Photo de Sohrab Salimi
Sohrab Salimi
4 min. Temps de lecture
Ce contenu a été traduit par IA. Voir l'original

Le Feature Flagging désigne en développement logiciel l'activation et la désactivation de fonctionnalités ou features en cours de développement au moment de l'exécution.

Les Feature Flags décrivent ainsi une technique de programmation qui te permet, avec ton équipe, de livrer des logiciels plus rapidement et de manière plus sécurisée, tout en intégrant le travail entre différentes équipes. Comme le déploiement d'applications indépendamment du calendrier est une exigence de plus en plus fréquente, les Feature Flags offrent une solution adaptée. De plus, ces flags aident à optimiser les flux de travail d'une équipe de développement.

Termes synonymes pour Feature Flags et Feature Flagging :

  • Feature Toggles / Feature Toggling
  • Feature Switches
  • Feature Flippers
  • Feature Bits
  • Conditional Features (en lien avec le User Targeting)

Objectifs et avantages des Feature Flags en détail

Grâce aux Feature Flags, toi et ton équipe pouvez :

  • livrer des logiciels plus rapidement et donc de manière progressive et déployer de nouvelles fonctionnalités pour les clients (l'Intégration Continue et la Livraison Continue deviennent plus rapides et plus simples)
  • intégrer de nouvelles features entre différentes équipes
  • tester de nouvelles exigences en environnement de production (sans que les clients s'en aperçoivent)
  • activer des features déjà développées uniquement pour certains groupes d'utilisateurs
  • améliorer progressivement les fonctionnalités et l'UX grâce à des tests réguliers
  • maintenir la stabilité des applications en production en désactivant les fonctionnalités défectueuses
  • minimiser les déploiements de bugfix chronophages
  • découpler les releases logicielles et le déploiement des applications
  • éviter les déploiements volumineux et donc risqués en fusionnant plus fréquemment avec la branche principale plutôt que de fusionner rarement de longues branches de features
  • réagir de manière flexible aux changements d'exigences des clients sans déploiement supplémentaire

Quand et comment utiliser les Feature Flags ?

En pratique, des features finalisées restent souvent en attente car elles ne peuvent pas encore être mises en production. Les branches de features concernées ne peuvent donc pas encore être fusionnées.

Grâce aux Feature Toggles / Flags, le code finalisé peut être immédiatement fusionné et déployé, de sorte que les nouvelles fonctionnalités sont déjà présentes en arrière-plan sans être visibles. Cela évite des problèmes massifs lors de la fusion ultérieure, lorsque d'autres parties du logiciel ont été modifiées entre-temps.

L'utilisation des Feature Flags est également pertinente dans les cas d'usage suivants :

  • Intégration Continue et Livraison Continue (CI / CD)
  • Kill-Switch
  • Tests A/B avec les clients en environnement de production
  • Gestion de configuration
  • Contrôle des autorisations dans l'application
  • Déploiement progressif de fonctionnalités en pourcentage

Il existe 3 façons d'implémenter les Feature Flags :

  1. Implémenter les Feature Toggles directement dans le code
  2. Intégration via un fichier de configuration (config)
  3. Intégration via un logiciel de gestion des Feature Flags

Conseils :

Pour maintenir la complexité du code aussi faible que possible, toi et ton équipe devriez :

  • utiliser les Feature Flags de manière aussi parcimonieuse que possible
  • supprimer du cycle de vie logiciel les flags qui ne sont plus utilisés

4 types de Feature Flags

Selon la durée pendant laquelle les Feature Flags doivent rester dans le code et leur fonction, on peut les classer dans les 4 catégories suivantes :

Release Toggle

Les Release Toggles permettent un déploiement de code non testé et incomplet en environnement de production, sans activer le code. De cette façon, les Product Managers peuvent par exemple activer de nouvelles fonctionnalités selon les besoins.

Experiment Toggle

Les Experiment Toggles permettent de contrôler le comportement spécifique aux utilisateurs au sein d'une application. À cette fin, les utilisateurs sont identifiés dans le système logiciel pour ensuite les cibler de manière précise. Ainsi, de nouvelles fonctionnalités peuvent être rapidement testées sur des groupes de personnes spécifiques, afin d'intégrer les enseignements dans le développement ultérieur.

Ops Toggle

Les Ops Toggles permettent aux équipes d'exploitation de gérer le fonctionnement des applications via des Feature Toggles. Cela permet des rollbacks rapides de fonctionnalités et le test de la charge système de nouvelles fonctionnalités sur de petits groupes. De plus, les Ops Toggles permettent de désactiver en production des fonctionnalités non essentielles ("Kill-Switches").

Permission Toggle

Les Permission Toggles permettent de contrôler le comportement spécifique aux utilisateurs connus au sein d'une application. Par exemple, tu peux activer via ces toggles des fonctionnalités pour les clients VIP ou Premium. Les tests A/B représentent une autre possibilité d'utilisation.

Conclusion sur les Feature Toggles / Flags

Les Feature Toggles ou Flags aident les équipes à livrer, intégrer et tester plus rapidement et plus facilement de nouvelles fonctionnalités et features.

Différents types de toggles servent des objectifs distincts, comme tester de nouvelles fonctionnalités sur de petits groupes, activer des autorisations spécifiques ou vérifier la charge système. Les Feature Flags et Toggles peuvent afficher ou masquer des sections entières d'un logiciel ou contrôler uniquement de petits blocs de code. Comme ils peuvent être utilisés aussi bien côté backend, frontend qu'à l'échelle de l'application, ils offrent une grande flexibilité.

Important : dès que les Feature Flags ne sont plus nécessaires dans le code, toi ou ton équipe devriez les supprimer. De cette façon, tu évites que le code ne devienne trop complexe.

Plus sur ce sujet

Lean Software Development (LSD)

Le Lean Development ou développement allégé se concentre sur la réduction du gaspillage et des pertes. Nous t'expliquons comment ça fonctionne dans notre lexique !

Que signifie la Vélocité pour ton équipe ? - Définition et comment la calculer !

Découvrez ce que signifie la Velocity dans le contexte de Scrum et comment elle peut aider votre équipe à optimiser ses performances.

Mission & Vision : Comment formuler ton énoncé de mission

Différences entre mission et vision, importance pour le développement organisationnel. Visitez Agile Academy pour plus d'informations.

Parle à notre assistant Parle à notre assistant