Une nouvelle release pour Izanami
L’équipe #OSSByMAIF est fière de libérer la v2 d’Izanami.
Izanami v2 est une réécriture complète de la version précédente, qui se concentre sur les feature flags.
La version anglaise de cet article est disponible ici.
Qu’est-ce que les feature flags ?
Les features flags sont un pattern de développement qui permet de décorréler l’activation des nouvelles fonctionnalités de leurs livraisons.
Positionner une fonctionnalité derrière un flag permet de l’activer ou la désactiver à volonté, ou seulement à certaines conditions, et ce, sans avoir besoin de redéployer l’application.
Les features flags sont également un facilitateur dans l’adoption du trunk based development. Ce flow de développement évite aux équipes de devoir gérer les branches de fonctionnalité qui vivent longtemps et les merges cauchemardesques qui en découlent. Les nouvelles fonctionnalités peuvent en effet être développées sur la branche principale, en étant conditionnées par des flags adaptés.
Flags locaux ou Izanami
Les feature flags locaux sont l’implémentation la plus commune du pattern. Ils sont définis entièrement dans le code de l’application concernée, généralement via des if/else qui peuvent par exemple s’appuyer sur des variables d’environnement ou des librairies dédiées.
Les flags locaux sont un bon moyen d’introduire le principe des feature flags dans une base de code et sont une solution suffisante pour des besoins peu complexes. Izanami offre une alternative en permettant de centraliser les feature flags, ce qui apporte certains avantages :
- Les flags peuvent être partagés par plusieurs applications, quelles que soient leurs technologies
- Les conditions d’activation des flags peuvent être modifiées sans impact sur les applications clientes
- Tous les flags sont au même endroit, ce qui simplifie leur administration et leur suivi
- L’activation / désactivation d’un flag a un effet immédiat sur tous les consommateurs.
Les fonctionnalités d’Izanami
Comme nous l’avons vu, Izanami est une solution de feature flags centralisée. Elle permet de définir et d’exposer facilement des flags.
Les flags peuvent être de simples interrupteurs ON/OFF ou avoir des conditions d’activation plus complexes, basées sur l’utilisateur, la date ou encore un script personnalisé.
Izanami expose les flags via HTTP, permettant à n’importe quelle application de récupérer facilement leur état.
Pour ne rien gâcher, Izanami est open source (sous license Apache 2), ce qui vous permet de proposer de nouvelles fonctionnalités ou de nous aider à les développer !
Changements de la v2
Cette nouvelle version d’Izanami se concentre sur les features flags. Elle introduit des fonctionnalités orientées entreprises, comme le multi-tenant, l’organisation des features par projet et tags mais aussi le support des environnements (et bien plus) via les contextes. Les feature flags sont également beaucoup plus flexibles, car ils peuvent maintenant avoir plusieurs conditions d’activation.
Cette nouvelle version réimplémente par ailleurs les feature flags basés sur des scripts, en utilisant des scripts compilés en WASM grâce à WASMO et Extism.
L’utilisation de WASM rend l’exécution des scripts complètement sandboxée et permet l’écriture de features en utilisant une grande variété de langages, comme Rust, Go ou encore JavaScript.
Même si la v2 est une réécriture complète, elle assure la compatibilité avec les clients existants, à l’exception de quelques cas très marginaux. Un nouveau client Java arrive également avec la v2, avec moins de dépendances et plus de flexibilité dans les requêtes, notamment en ce qui concerne la gestion des erreurs et la gestion du cache.
Un autre grand changement est le choix de Postgres comme base de données, ce qui permet l’utilisation de fonctionnalités spécifiques pour offrir de meilleures performances.
L’A/B testing est absent de la v2 pour le moment, mais nous prévoyons de le réintégrer bientôt.
Enfin, Izanami n’inclut plus de gestion de configuration distribuée, d’une part, car il existe de nombreuses solutions open source qui le font très bien (Spring cloud config, Consul, ZooKeeper…), d’autre part car ce n’était pas la fonctionnalité la plus utilisée de la v1.
La suite
Même si la v2 est prête à être déployée en production, quelques fonctionnalités importantes sont encore en cours de développement :
- Audit logs : cette fonctionnalité permettra de consulter l’historique de modification et de consultation des flags. Cela pourra être utile pour comprendre comment un flag est arrivé dans un état donné, ou encore pour s’assurer qu’un flag ne soit plus consulté avant de le supprimer.
- Client JavaScript : nous prévoyons l’écriture d’un nouveau client JavaScript pour exploiter pleinement les capacités de cette nouvelle version.
- A/B testing : l’A/B testing n’est pas présent dans Izanami v2, mais nous prévoyons de le réintégrer dans une version améliorée, comme nous l’avons fait pour les feature flags.
Pour en savoir plus, n’hésitez pas à consulter la documentation ou le repo Github du projet.