Vous êtes sur la page 1sur 4

Activation & désactivation des fonctionnalités de

l’application SARA Client grâce aux Feature Flagging


Introduction
L’application SARA Client dans son processus d’extension à travers les différentes filiales situées
dans différents pays, a besoin de contrôler les fonctionnalités qui seront disponibles dans les
différentes applications. L’objectif est de fournir des applications avec des fonctionnalités similaires
ou différentes sans toutefois avoir une base de code différente pour l’application de chaque pays.

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 ».

Qu’est-ce que le feature flagging ?


Selon le site web Atlassian, les feature flags aussi appelés feature toggles sont des conditions if
placées dans le code source qui permettent aux développeurs d’activer ou de désactiver des
fonctionnalités.

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.

c. Outil dédié à la gestion des feature flags


Si l’équipe de développement ne veut pas perdre du temps à développer une solution complète
pour la gestion des flags pour les applications, elle peut utiliser des outils dédiés à la gestion des
feature flags.

Il existe des outils qui sont gratuits, payants et open-source fournissant :

- des interfaces d’administration des flags par applications ;


- des APIs permettant d’intégrer la gestion de ces flags dans les différents clients ;
- des SDKs s’intégrant avec la plupart des langages de programmation facilitant la
communication avec les APIs depuis les clients, la vérification des flags et les
environnements ;
- des fonctionnalités avancées telles que la création de flags par contexte dans une même
application, on pourrait ainsi avoir un contexte Cameroun et un contexte Guinée par
exemple où les fonctionnalités seront activées différemment.

On peut ainsi citer des outils tels que :

- Harness ;
- LaunchDarkly ;
- Split ;
- Unleash (Open-source) ;

GitLab comme gestionnaire de feature flags


C’est avec un minimum de surprise que lorsqu’en effectuant des recherches sur le sujet, nous
nous sommes rendus compte que le gestionnaire Gitlab, possédait un gestionnaire de feature flags
intégrés à chacun des projets(repos) disponibles.

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.

Webographie / Liens utiles


https://www.atlassian.com/solutions/devops/integrations/feature-flags

https://docs.gitlab.com/ee/operations/feature_flags.html

https://github.com/Unleash/unleash

https://docs.getunleash.io/reference/sdks/flutter

Vous aimerez peut-être aussi