
FF4j es una implementación del patrón Feature Toggle.
Feature Toggle: Habilita y deshabilita funciones en tiempo de ejecución, sin despliegues. En tu código, implementa múltiples rutas protegidas por predicados dinámicos (if/then/else).
Alternancia basada en roles: Habilita funciones no solo con valores de bandera, sino que también controla el acceso con roles y grupos (Canary Release). Se admiten diferentes frameworks, empezando por Spring Security.
Alternancia basada en estrategias: Implementa predicados personalizados (Patrón Strategy) para evaluar si una función está habilitada. Algunos se proporcionan de serie: listas blancas/negras, basados en tiempo, basados en expresiones. Conecta fuentes externas como un motor de reglas Drools.
Alternancia impulsada por AOP: Mantén tu código limpio y legible: evita las sentencias if anidadas y usa anotaciones. Gracias a Spring AOP, la implementación objetivo se selecciona en tiempo de ejecución y, por tanto, se rige por los estados de las funciones.
Monitoreo de funciones: Para la ejecución de cada función, ff4j evalúa el predicado, por lo que es posible recopilar y registrar eventos y métricas para crear buenos paneles o dibujar curvas de uso de funciones a lo largo del tiempo.
Registro de auditoría: Cada acción (crear, actualizar, eliminar, alternar) se puede rastrear y guardar en el registro de auditoría para solucionar problemas. Con la gestión de permisos (AuthorizationManager) es posible identificar a los usuarios.
Consola web: Administra FF4j (incluyendo funciones y propiedades) con la interfaz web. Empaquetado como servlet en la librería, lo expondrás en tus aplicaciones backend. Disponible en casi 10 idiomas.
Amplia variedad de bases de datos Nuestro orgullo: soportamos más de 20 tecnologías de bases de datos para almacenar tus funciones, propiedades y eventos. Mismo modelo de negocio, múltiples implementaciones. Gracias a los puntos de extensión, es fácil crear la tuya propia.
Spring Boot Starter Importa la dependencia ff4j-spring-boot-starter en tus microservicios para que la consola web y la API REST funcionen de inmediato. (Para usarse en la aplicación backend. Ahora compatible con Spring Boot 2x: 👉 EJEMPLOS
API REST Opera FF4j a través de una API web. Esta es la forma de usar ff4j con otros lenguajes, especialmente frontends de javascript. (también: aprovecha FeatureStoreHttp para evitar que los microservicios se conecten directamente a la BD.
Propiedades (CMDB) Almacena no solo estados de funciones sino también cualquier valor de propiedad. Crea propiedades que puedas cambiar en tiempo de ejecución. Está integrado con los frameworks más utilizados, como Spring, Archaius, commons-config o Consul.
Puedes encontrar más información en ff4j.org o Documentación de referencia en la wiki.
Consulta la guía de inicio aquí
Página de inicio
Funciones
Monitoreo
Este proyecto existe gracias a todas las personas que contribuyen. [Contribuir].
¡Gracias a todos nuestros backers! 🙏 [Conviértete en backer]
Apoya este proyecto convirtiéndote en sponsor. Tu logo aparecerá aquí con un enlace a tu sitio web. [Conviértete en sponsor]
Caché (distribuida) Evaluar predicados puede ejercer presión sobre la BD (alta tasa de aciertos). ff4j proporciona cachés locales y distribuidas para ayudar. (editar una función también invalida la caché). Aprovechando JSR-107, soporta la mayoría de las soluciones de caché.
Interfaz de línea de comandos Para automatizar tareas o porque los puertos web pueden estar bloqueados (ya sabes, producción...), puedes trabajar a través de SSH usando nuestra Interfaz de línea de comandos (cli), nuestra Shell #devOps. Interactuará directamente con los almacenamientos.
JMX y MBeans Se puede realizar un conjunto limitado de operaciones a través de JMX. ff4j expone algunos MBeans para leer métricas o alternar funciones desde herramientas externas (Nagios...). No todas las aplicaciones están basadas en web (batch, shell, standalone...).