
FF4j è un'implementazione del pattern Feature Toggle.
Feature Toggle: Abilita e disabilita le funzionalità a runtime, senza deploy. Nel tuo codice implementa più percorsi protetti da predicati dinamici (if/then/else).
Toggle basato sui ruoli: Abilita le funzionalità non solo tramite valori flag ma guida l'accesso anche con ruoli e gruppi (Canary Release). Supportati diversi framework, a partire da Spring Security.
Toggle basato sulle strategie: Implementa predicati personalizzati (Strategy Pattern) per valutare se una funzionalità è abilitata. Alcuni sono forniti di serie: White/Black lists, basati sul tempo, basati sulle espressioni. Collega una sorgente esterna come un motore a regole Drools.
Toggle basato su AOP: Mantieni il codice pulito e leggibile: evita i cicli if annidati ma usa le annotazioni. Grazie a Spring AOP l'implementazione target viene scelta a runtime ed è quindi guidata dagli stati delle funzionalità.
Monitoraggio delle funzionalità: Per ogni esecuzione di una funzionalità, ff4j valuta il predicato; è quindi possibile raccogliere e registrare eventi e metriche per realizzare dashboard efficaci o tracciare curve sull'utilizzo delle funzionalità nel tempo.
Audit Trail: Ogni azione (create, update, delete, toggle) può essere tracciata e salvata nell'audit trail per il troubleshooting. Con la gestione dei permessi (AuthorizationManager) è possibile identificare gli utenti.
Console Web: Amministra FF4j (incluse funzionalità e proprietà) con l'interfaccia web. Impacchettato come servlet nella libreria, lo esporrai nelle tue applicazioni backend. Quasi 10 lingue disponibili.
Ampia scelta di database Il nostro orgoglio: supportiamo più di 20 tecnologie di database per memorizzare funzionalità, proprietà ed eventi. Stesso modello di business, molteplici implementazioni. Grazie ai punti di estensione è facile crearne di proprie.
Spring Boot Starter Importa la dipendenza ff4j-spring-boot-starter nei tuoi microservizi per avere subito console web e rest api funzionanti. (Da usare per l'app backend. Ora compatibile con Spring Boot 2x: 👉 ESEMPI
REST Api Opera su FF4j tramite una WEB API. È la strada da seguire per usare ff4j con altri linguaggi, in particolare i frontend javascript. (inoltre: sfrutta FeatureStoreHttp per evitare che i microservizi si connettano direttamente al DB.
Proprietà (CMDB) Memorizza non solo gli stati delle funzionalità ma qualsiasi valore di proprietà. Crea proprietà che puoi modificare a runtime. È integrato con i framework più utilizzati come Spring, Archaius, commons-config o Consul.
Maggiori informazioni sono disponibili su ff4j.org o nella Documentazione di riferimento nel wiki.
Consulta la guida introduttiva qui
Home Page
Funzionalità
Monitoraggio
Questo progetto esiste grazie a tutte le persone che contribuiscono. [Contribuisci].
Grazie a tutti i nostri backers! 🙏 [Diventa un backer]
Supporta questo progetto diventando uno sponsor. Il tuo logo apparirà qui con un link al tuo sito web. [Diventa uno sponsor]
Cache (distribuita) Valutare i predicati può mettere sotto pressione il DB (elevato hit ratio). ff4j fornisce cache locali e distribuite per aiutare. (la modifica di una feature invalida anche la cache). Sfruttando JSR-107 supporta la maggior parte delle soluzioni di cache.
Interfaccia a riga di comando Per automatizzare le cose o perché le porte web potrebbero essere bloccate (si sa, la produzione...) puoi lavorare tramite SSH usando la nostra interfaccia a riga di comando (cli), la nostra Shell #devOps. Interagirà direttamente con gli storage.
JMX e MBeans Un insieme limitato di operazioni può essere eseguito tramite JMX. ff4j espone alcuni Mbeans per leggere metriche o attivare/disattivare funzionalità da strumenti esterni (Nagios...). Non tutte le applicazioni sono basate sul web (batch, shell, standalone...).