
FF4j est une implémentation du pattern Feature Toggle.
Feature Toggle : Activez et désactivez des fonctionnalités à l'exécution - sans redéploiement. Dans votre code, implémentez plusieurs chemins protégés par des prédicats dynamiques (if/then/else).
Basculement par rôles : Activez les fonctionnalités non seulement avec des valeurs de drapeaux mais aussi en pilotant l'accès par rôles et groupes (Canary Release). Différents frameworks sont pris en charge, à commencer par Spring Security.
Basculement par stratégie : Implémentez des prédicats personnalisés (Strategy Pattern) pour évaluer si une fonctionnalité est active. Certains sont fournis prêts à l'emploi : listes blanche/noire, basés sur le temps, basés sur des expressions. Connectez une source externe comme un moteur de règles Drools.
Basculement piloté par AOP : Gardez votre code propre et lisible : évitez les instructions if imbriquées mais utilisez des annotations. Grâce à Spring AOP, l'implémentation cible est choisie à l'exécution, et donc pilotée par l'état des fonctionnalités.
Surveillance des fonctionnalités : Pour chaque exécution de fonctionnalité, ff4j évalue le prédicat, il est donc possible de collecter et d'enregistrer des événements, des métriques pour calculer de beaux tableaux de bord ou tracer des courbes d'utilisation des fonctionnalités au fil du temps.
Piste d'audit : Chaque action (création, mise à jour, suppression, basculement) peut être tracée et sauvegardée dans la piste d'audit pour le dépannage. Avec la gestion des permissions (AuthorizationManager), il est possible d'identifier les utilisateurs.
Console Web : Administrez FF4j (y compris les fonctionnalités et les propriétés) avec l'interface web. Empaquetée comme un servlet dans la bibliothèque, vous l'exposez dans vos applications backend. Près de 10 langues disponibles.
Large choix de bases de données : Notre fierté : nous prenons en charge plus de 20 technologies de bases de données pour stocker vos fonctionnalités, propriétés et événements. Même modèle métier, implémentations multiples. Grâce aux points d'extension, il est facile de construire la vôtre.
Spring Boot Starter Importez la dépendance ff4j-spring-boot-starter dans vos microservices pour obtenir immédiatement la console web et l'API REST fonctionnelles. (À utiliser pour l'application backend. Désormais compatible avec Spring Boot 2x : 👉 EXEMPLES
API REST Pilotez FF4j via une API WEB. C'est la voie à suivre pour utiliser ff4j avec d'autres langages, en particulier les frontends JavaScript. (aussi : tirez parti de FeatureStoreHttp pour éviter que les microservices se connectent directement à la base de données.
Plus d'informations peuvent être trouvées sur ff4j.org ou la Documentation de référence dans le wiki.
Consultez le guide de démarrage ici
Page d'accueil
Fonctionnalités
Surveillance
Ce projet existe grâce à toutes les personnes qui contribuent. [Contribuer].
Merci à tous nos soutiens ! 🙏 [Devenir un soutien]
Soutenez ce projet en devenant sponsor. Votre logo apparaîtra ici avec un lien vers votre site web. [Devenir sponsor]
Propriétés (CMDB) Stockez non seulement les états des fonctionnalités mais aussi toute valeur de propriété. Créez des propriétés que vous pouvez modifier à l'exécution. C'est intégré avec les frameworks les plus utilisés comme Spring, Archaius, commons-config ou Consul.
Cache (distribué) L'évaluation des prédicats peut mettre la base de données sous pression (taux de succès élevé). ff4j fournit des caches locaux et distribués pour aider. (modifier une fonctionnalité invalide aussi le cache). En tirant parti de JSR-107, il prend en charge la plupart des solutions de cache.
Interface en ligne de commande Pour automatiser les choses ou parce que les ports web peuvent être bloqués (vous savez, la production...), vous pouvez travailler via SSH en utilisant notre interface en ligne de commande (CLI), notre Shell #devOps. Elle interagit directement avec les stockages.
JMX et MBeans Un ensemble limité d'opérations peut être effectué via JMX. ff4j expose certains MBeans pour lire les métriques ou basculer des fonctionnalités depuis des outils externes (Nagios...). Toutes les applications ne sont pas basées sur le web (batchs, shell, autonomes...).