18 décembre 2024
Stratégie de déploiement : Développement avec Feature Flags
La gestion des versions est essentielle pour s'assurer que les versions d'une application sont prêtes à être lancées en environnement de production et à être utilisées de manière efficace. Il ne s'agit pas seulement de garantir la qualité du produit final, mais aussi de répondre aux attentes des équipes internes et des utilisateurs finaux. Ce processus va au-delà de la simple vérification avant le lancement, car il couvre tout le cycle de vie de la version, du développement aux tests et à son déploiement en production.
Une gestion des versions bien exécutée permet non seulement d'assurer des produits de haute qualité, mais aussi des lancements plus fréquents sans augmenter les risques. En incorporant une approche flexible, basée sur l'utilisation de feature flags, il est possible de réduire le temps de commercialisation et de rendre votre produit plus compétitif sur le marché.
Indicateurs de fonctionnalité
Les feature flags (également appelées feature toggle) sont une technique utilisée dans le développement de logiciels qui permet d'activer ou de désactiver des fonctionnalités spécifiques au sein d'une application sans avoir besoin de déployer de nouvelles versions du code. Essentiellement, elles agissent comme des interrupteurs qui permettent d'activer ou de désactiver des caractéristiques en temps réel, de manière contrôlée et segmentée.
Pourquoi les utiliser ?
Ils offrent aux équipes de développement une grande flexibilité, minimisent le risque d'interruptions et permettent une approche plus dynamique et adaptative pour gérer le cycle de vie des fonctionnalités d'une application.
- Déploiement continu sans risques : Vous pouvez déployer du nouveau code en production sans avoir à l'activer immédiatement pour tous les utilisateurs. Cela permet aux équipes de développement de libérer de nouvelles fonctionnalités de manière sécurisée et d'activer ou de désactiver des caractéristiques selon les besoins, réduisant ainsi le risque d'erreurs critiques en production.
- Facilite l'expérimentation : Ils sont un outil idéal pour réaliser des expériences, car ils vous permettent de tester différentes versions d'une fonctionnalité avec des sous-ensembles d'utilisateurs. Cela vous aide à prendre des décisions basées sur des données réelles sur la version qui offre les meilleurs résultats avant de procéder à un lancement global.
- Contrôle des migrations et des changements d'infrastructure : Dans les projets de migration ou de refactorisation, ils permettent d'activer des parties spécifiques d'une nouvelle architecture (comme un nouveau système ou service) sans interrompre le fonctionnement général de l'application. Cela facilite une transition progressive et contrôlée, avec la possibilité de réaliser des retours en arrière immédiats si quelque chose tourne mal.
Tipos de feature flags
Voici quelques types de feature flags :
- Test A/B : Nous pouvons réaliser des tests A/B en temps réel, en montrant à différents utilisateurs différentes versions d'une fonctionnalité pour déterminer laquelle a une meilleure acceptation ou performance, nous pouvons également l'appeler un exécuteur d'expériences. Par exemple, nous pourrions tester différents designs ou flux UX pour une section spécifique de l'application.
- Déploiements Canary : Avant de lancer une nouvelle fonctionnalité à l'ensemble de la base d'utilisateurs, nous pouvons effectuer un déploiement progressif pour un petit pourcentage. Cela nous permet de recueillir des retours et de détecter d'éventuels problèmes avant un lancement massif.
- Fonctionnalités spécifiques pour segments d'utilisateurs : Les feature flags nous permettent d'offrir des fonctions spécifiques à certains segments d'utilisateurs. Par exemple, nous pourrions lancer des fonctions avancées uniquement pour les utilisateurs premium ou certaines caractéristiques de l'application pour qu'elles ne soient disponibles que dans certaines régions géographiques ou en fonction de l'appareil.
Bonnes pratiques
Voici quelques bonnes pratiques recommandées lors de l'utilisation des Feature flags dans un projet :
- Convention de noms sensée : Il est essentiel d'adopter une convention de nomenclature pour éviter les confusions et les interruptions potentielles du système. Cette convention doit être descriptive, en incorporant des aspects tels que le nom de l'équipe, la date de création, la description du comportement du flag et sa catégorie (temporaire ou permanente).
- Contrôle d'accès : Chaque drapeau doit avoir un propriétaire responsable de justifier son existence et de le supprimer lorsque cela est nécessaire. Sans propriétaire défini, le drapeau peut devenir obsolète et contribuer à la dette technique.
- Durée de vie limitée : À moins qu'un flag ne soit une partie permanente du système (comme les flags de mises à jour ou de versions), il est essentiel de se rappeler de supprimer les flags qui ne sont plus utilisés ou dont la fonction a changé.
- Prudence avec les flags dépendants et conflictuels : À mesure que l'équipe de développement grandit, le problème des flags dépendants entre eux ou en conflit peut surgir. Il est crucial d'identifier et de cartographier ces dépendances pour éviter des problèmes lors du déploiement. Par exemple, si deux équipes développent des fonctionnalités derrière différents flags, mais ne testent pas leur interaction, une partie de l'application pourrait se casser en activant les deux flags simultanément. La planification et la cartographie détaillée des dépendances des flags sont essentielles pour prévenir ces problèmes.
Exemples d'utilisation
Voici quelques exemples montrant la polyvalence des feature flags.
Développement continu
En raison de la manière dont fonctionnent les feature flags, cela nous permet de développer les fonctionnalités par parties sans avoir à nous soucier de créer une branche pour cette fonctionnalité, puis de faire la fusion avec tout ce que cela implique et les conflits possibles.
Imaginons que nous avons une classe qui contient beaucoup de logique legacy et complexe, par exemple, valider une série de données. Nous voulons ajouter plus de validations, mais le code legacy est difficile à modifier. Il est décidé de réécrire le validateur pour qu'il soit plus clair et plus facile à maintenir. Comme cela peut prendre un certain temps, ce que nous pouvons faire est de créer un feature flag pour intégrer le code du nouveau validateur dès que possible, réduisant ainsi les efforts supplémentaires lors du merge. De plus, nous pouvons activer ce nouveau validateur lorsque nous en avons besoin pour tester, par exemple, lorsque nous savons qu'il y a peu de trafic ou dans un environnement contrôlé.
Désactiver les fonctionnalités
Nous pouvons également utiliser des feature flags pour désactiver des fonctionnalités en période de forte demande. Imaginons que nous ayons une section de commentaires et que, pour une raison quelconque, la demande pour cette fonctionnalité augmente trop, compromettant ainsi le système. Il est possible de choisir de désactiver temporairement les commentaires.
Test A/B
Tests A/B orientés vers les divers changements qui peuvent être appliqués dans les versions des applications mobiles des différentes pages web. Des facteurs tels que le remplacement de grandes quantités de texte par des symboles ou le changement de la forme des boutons influencent. Par exemple, les chaînes de vêtements. Dans les applications, il est possible de simplifier les textes en plaçant un panier d'achat à la place du mot "Acheter" et d'étudier le comportement des utilisateurs.
Un autre exemple, lié à un système de critiques. Valider le comportement en permettant aux utilisateurs de noter sur une échelle de 1 à 10, au lieu d'un ancien système de notation de 5 étoiles.
Conclusion
L'utilisation des feature flags dans le développement d'applications offre un avantage stratégique en permettant un contrôle accru sur l'activation des fonctionnalités sans dépendre du cycle de déploiement. Cette capacité à activer ou désactiver des fonctionnalités de manière granulaire facilite les tests en environnements réels, réduit le risque d'introduire des erreurs en production et permet aux équipes de développement de se déplacer avec plus d'agilité. Cependant, il est essentiel de bien gérer cet outil, car une mauvaise mise en œuvre peut augmenter la complexité technique et rendre la maintenance du code plus difficile.
Malgré cela, lorsqu'il est utilisé de manière appropriée, les avantages l'emportent sur les défis, offrant aux équipes une flexibilité significative pour itérer plus rapidement et mieux s'adapter aux besoins de l'entreprise.
Share
Peut-être que cela pourrait vous intéresser
Servihabitat | Flocon de neige
Servihabitat avait besoin d'une plateforme qui leur permettrait de suivre de bout en bout leurs actifs afin de gagner en agilité dans leur commercialisation massive. Pour cela, un projet de modernisation technologique global a été lancé, avec l'implémentation de Snowflake Cloud.