Partie 1 : Introduction au feature flipping ou comment activer / désactiver dynamiquement une fonctionnalité d’un logiciel

Introduction

Il est maintenant commun d’entendre les responsables métier demander à leurs équipes IT daccélérer « le time to market de leur projet ».

Il est en effet attendu des DSI de :

  • Livrer plus rapidement des fonctionnalités à leurs utilisateurs;
  • Sécuriser les processus de déploiement en ayant la capacité à effectuer des retours arrière de manière simplifiée;
  • Tester sur des populations distinctes différents parcours pour proposer la meilleure expérience utilisateur.

En ce sens, le feature flipping constitue un ensemble d’outils et méthodes permettant dactiver et désactiver des fonctionnalités dune application, sans relivraison de code pour des populations distinctes.

Les Géants du Web (Google, Facebook, etc.) ne s’y sont d’ailleurs pas trompés et ont implémenté des solutions développées en interne il y a déjà plusieurs années.

Nous aborderons dans cet article : la notion de feature flipping, les cas d’usage couverts et les précautions à prendre avec l’utilisation de ce type d’outil.

Qu’est-ce que le feature flipping ?

Plusieurs synonymes sont utilisés pour évoquer cette notion : feature flipping, feature flagging, débrayabilité, feature toggling, … Nous parlerons ici de feature flipping.

La mise en œuvre de cette pratique consiste à intégrer dans le code applicatif des clés (feature flags) entre chaque fonctionnalité permettant de piloter à partir d’une table de configuration ou d’une base de données l’activation et la désactivation d’une fonctionnalité.

Une plateforme dadministration peut être alors requise (en surcouche de la table de configuration) pour piloter l’état des différents « flags », à chaud ou à froid sur différents environnements.

Présentation de l'architecture logique des solutions de feature flipping

4 bénéfices immédiats

Déploiement en continu

L’un des premiers avantages de cette solution est de pouvoir déployer en continu des applications en production en désactivant des portions de code non finalisées par les équipes de développeurs pour garantir l’agilité d’un projet (Continuous Delivery).

Toutes les fonctionnalités non achevées sont désactivées, et la release peut ainsi être déployée en production sans attendre la complétude de l’ensemble des portions de code. Une fois ces dernières achevées, elles pourront être activées dans un second temps.

Sécurisation des processus de déploiement

L’une des inquiétudes des équipes d’exploitation est de savoir si une application fonctionnera lors de sa mise en production. Les fonctionnalités de feature flipping permettent de réduire ces risques en offrant la possibilité de désactiver à chaud une fonctionnalité sans besoin de retour arrière. Nous entendons par retour arrière le besoin de faire une restauration de sauvegarde ou une relivraison de la version N-1 d’une application. Une autre capacité des solutions de feature flipping appelée « canary release » permet de déployer sur une frange de population distincte une fonctionnalité précise. Sur une version N d’une application, une fonctionnalité de l’application va être activée pour être testée sur une population pilote. Cette fonctionnalité ne sera en revanche pas visible (car désactivée du reste de la population restante). Si les retours utilisateurs sont bons, la fonctionnalité pourra être activée progressivement au reste de la population pour permettre son déploiement progressif.

le canary release dans le feature flipping

Améliorer l’expérience utilisateur par l’expérimentation

Par extension, les capacités de feature flipping permettent de personnaliser des parcours utilisateurs en modifiant notamment des éléments graphiques de fonctionnalités sur des segments de populations distinctes. Il est possible par exemple de modifier du texte, de la couleur, des visuels, des tailles de bouton d’action et bien d’autres changements visuels pour des groupes différents et comparer l’expérience utilisateur la plus plébiscitée sur une même fonctionnalité. C’est ce que l’on appelle des campagnes dA/B testing.

Une plus grande réactivité en cas de cyberattaque du Système d’information (SI)

En cas de détection d’une attaque du Système d’Information ou de fuite de données sur une application sensible, les équipes Sécurité et Exploitation peuvent avoir une plus grande réactivité en désactivant les fonctionnalités les plus sensibles du SI sans pour autant couper l’ensemble des moyens informatiques. Cette fonctionnalité permet de compléter l’arsenal de réponses des RSSI (Responsable de la Sécurité des Systèmes d’Information) et réduire les conséquences d’une cyberattaque.

Un outil puissant à manier avec certaines précautions

Cet outil, aussi puissant soit-il, peut néanmoins amener quelques désagréments si certaines bonnes pratiques ne sont pas respectées au préalable.

L’intégration des feature flags dans les développements applicatifs génèrent des charges de recette beaucoup plus conséquentes parce qu’il convient à la fois de tester l’activation et la désactivation de chaque fonctionnalité et leurs effets de bord induits sur le reste du code. Lautomatisation de tests de non-régression peut être d’ailleurs une bonne option afin de tester plus rapidement l’insertion des flags dans le code.

De plus, une gouvernance et des règles d’utilisation de l’outil doivent être clairement établies pour éviter certaines dérives. Les utilisateurs habilités à administrer l’activation et la désactivation des fonctionnalités doivent être clairement identifiés pour éviter des opérations d’administration contradictoires en production entre 2 équipes différentes (par exemple, développeurs et métiers). Une rigueur absolue est également nécessaire pour nettoyer les feature flags obsolètes en production et éviter toute dette technique et des lourdeurs dans le code.

La mise en place d’une solution pouvant activer / désactiver des services en production peut également générer des inquiétudes auprès des équipes sécurité et exploitation, qu’il faut acculturer et rassurer, notamment sur les impacts d’un incident de la plateforme de feature flipping sur le SI.

En synthèse…

  • Le feature flipping est un outil puissant pour les organisations Agiles permettant de densifier, simplifier et sécuriser les déploiements de code applicatif et améliorer leurs produits par des expérimentations de manière souple. Il permet également une plus grande réactivité en cas de cyberattaque;
  • D’ailleurs, les grands du Web utilisent déjà ce type de solution depuis plusieurs années;
  • Toutefois, la mise en place de ce type de projet nécessite un outillage, une gouvernance et des règles robustes en fonction du degré de complexité du contexte de l’entreprise, ainsi qu’un peu de sensibilisation.

Dans un second article sur cette thématique, nous ferons un tour d’horizon des solutions existantes et de leurs principes d’architecture ainsi que des clés de décision sur la stratégie de construction ou de souscription de ce type de technologie.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *