Académique Documents
Professionnel Documents
Culture Documents
C’est dans cette optique et avec cet objectif en tête que nous avons effectués des recherches sur
une technique de développement appelée « Feature Flagging ».
Pour être plus clair, c’est une technique de développement qui consiste à rajouter des conditions
à l’affichage ou à la disponibilité des fonctionnalités de votre application en se basant sur une liste
de flags(drapeaux en français) qui indiquent l’état des fonctionnalités(si elles sont activées ou non).
Fonctionnement
En pratique, comment ça se passe ?
L’équipe des développeurs définissent des flags correspondant à chacune des fonctionnalités de
l’application qu’ils souhaitent pouvoir activer et désactiver.
Les clients (mobile ou web) obtiennent la liste de ces flags et leurs statuts à partir d’une API. Avec
cette liste ils vérifient les conditions qui masquent ou affichent les fonctionnalités de l’application.
a. Liste manuelle
La première méthode d’implémentation des feature flags consiste à établir une liste des flags
manuelle, soit : dans un fichier .yml, .json, une liste/un tableau dans le code source, une base de
données ; puis de retourner cette liste via une API exploitable par les différents clients.
b. Liste générée
La deuxième méthode consiste à construire une interface d’administration permettant de créer,
modifier, lire et supprimer les flags, qui seront mis à disposition via une API.
- Harness ;
- LaunchDarkly ;
- Split ;
- Unleash (Open-source) ;
Concrètement il offre la possibilité de définir des flags dans un projet (repo) déjà créé, de définir
des flags par environnements ou par contextes dans un même projet, il fournit une API à partir de
laquelle nous pouvons vérifier l’état des différents flags des fonctionnalités.
Gitlab est couplé au projet Unleash (cité plus haut), qui fournit une API et un SDK utilisable dans
Flutter, React ou autres facilitant la vérification des flags, la définition des contextes avant les
vérifications et autres.
Les codes sources (les bases) des applications étant déjà disponibles sur Gitlab, je propose qu’on
utilise son système de feature flags pour contrôler les fonctionnalités qui sont disponibles dans ces
applications.
Si vous vous rendez à l’intérieur d’un projet (repo), dans la barre de gauche, cliquez dans la
section Deployments/Déploiements sur Feature Flags.
Liste des flags dans le projet SARA mobile
On se retrouve face à cette interface présentant les flags du projet sélectionné, un bouton
Configure, permettant de configurer les éléments nécessaires à la connexion des clients (API, Token,
etc.), un bouton New feature flag, permettant d’ajouter un nouveau flag pour une fonctionnalité de
l’application.
En se basant sur la liste des flags générée par GitLab et sur les SDKs de Unleash, nous pourrons
ainsi écrire des contrôles dans les codes sources des applications clients et conditionner la
disponibilité des fonctionnalités par contextes.
https://docs.gitlab.com/ee/operations/feature_flags.html
https://github.com/Unleash/unleash
https://docs.getunleash.io/reference/sdks/flutter