
Framework de bascule de fonctionnalités pour Java permettant l'activation de fonctionnalités à l'exécution, l'accès basé sur les rôles, le basculement piloté par AOP, la surveillance, les pistes d'audit et une console web avec API REST.
FF4j, est une implémentation du modèle Feature Toggle.
Feature Toggle: Activez et désactivez des fonctionnalités à l'exécution - sans déploiement. Dans votre code, implémentez plusieurs chemins protégés par des prédicats dynamiques (if/then/else).
Basculement basé sur les rôles: Activez les fonctionnalités non seulement avec des valeurs de drapeau mais aussi en contrôlant l'accès avec des rôles et des groupes (Canary Release). Différents frameworks supportés, à commencer par Spring Security.
Basculement basé sur des stratégies: Implémentez des prédicats personnalisés (Strategy Pattern) pour évaluer si une fonctionnalité est activée. Certains sont fournis prêts à l'emploi : listes blanches/noires, basés sur le temps, basés sur des expressions. Connectez une source externe comme un moteur de règles Drools.
Basculement basé sur 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, donc pilotée par les statuts 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 dans le 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. Emballée en tant que servlet dans la bibliothèque, vous l'exposerez dans vos applications backend. Presque 10 langues disponibles.
Large choix de bases de données Notre fierté : nous supportons 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, multiples implémentations. 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 la console web et l'api REST opérationnelles immédiatement. (À utiliser pour l'application backend. Maintenant compatible avec Spring Boot 2x : 👉 EXEMPLES
API REST Opérez FF4j via une API WEB. C'est la façon de procéder pour utiliser ff4j avec d'autres langages, en particulier les frontends javascript. (aussi : exploitez 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 Documentation de référence dans le wiki.
Voir 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 statuts des fonctionnalités mais aussi n'importe quelle valeur de propriété. Créez des propriétés que vous pouvez modifier à l'exécution. Il 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 pression sur la base de données (taux de succès élevé). ff4j fournit des caches locaux et distribués pour aider. (modifier une fonctionnalité évince aussi le cache). En tirant parti de JSR-107, il supporte 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. Il interagira 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 à partir d'outils externes (Nagios...). Toutes les applications ne sont pas basées sur le web (batchs, shell, standalone...)