Integración de GrowthBook para habilitar el motor de reglas
Que es Growthbook
GrowthBook es una plataforma de gestión de feature flags y experimentación. Permite activar o desactivar funcionalidades en tiempo real, realizar pruebas A/B y controlar el despliegue de nuevas características sin necesidad de modificar el código ni hacer nuevos despliegues.
Para que se implementó en el proyecto
En este proyecto, GrowthBook se utiliza para habilitar o deshabilitar el motor de reglas (“Rule Engine”) para los nuevos modelos de negocio, manteniendo la funcionalidad legacy. Esto permite controlar desde GrowthBook si el sistema utiliza el motor de reglas moderno o sigue usando la lógica anterior, facilitando pruebas, migraciones y despliegues graduales.
Como se implementa Growthbook
La integración básica consiste en:
Instalar el SDK de GrowthBook.
Configurar el entorno con las credenciales y endpoints de GrowthBook.
Sincronizar los feature flags desde GrowthBook.
Consultar el estado de los flags para activar/desactivar funcionalidades.
Implementación en el proyecto lapachos lending
Crear cuenta en growthbook
Crear una nueva conexión SDK
Crear nombre de la conexion
Seleccionar el lenguaje del SDK
Seleccionar el “Environment”
Agregar el proyecto
Crear
Crear una nueva “Feature”
Nombre de la feature
Proyecto
Tipo de dato
Valor por defecto
Habilitar los entornos al que se van a aplicar
Crear
Dentro de la feature
En el apartado de “Reglas” agregar las reglas por cada entorno
Aquí se define un “Atributo” y el valor de ese atributo que se envía en el código para aplicar el feature
Publicar los cambios
Conexiones SDK
Dentro de la conexión se puede ver
Estado de la conexion
Claves que se deben agregar para la comunicación entre growthbook y el proyecto
Comando de instalación
Código para hacer la conexión
En el proyecto lending-backend
Ejecutar
yarn add @growthbook/growthbookAgregar las variables de entorno en el archivo .env proporcionadas por growthbook en el apartado de “Conexiones SDK”
Crear un archivo de configuracion de growthbook
En el proyecto este archivo se llama growthbook.ts y esta en la carpeta “libs” del proyecto
Aqui va el codigo SDK proporcionado por growthbook en el apartado de “Conexiones SDK”
Crear el archivo de motor de reglas donde se va a implementar growthbook
Este archivo se llama engineRules.ts
Este archivo recibe la respuesta de growthbook
Lleva la lógica respecto a la toma de decisión si aplica el motor de reglas o el código legacy
Ejemplo de Configuración
Este es el código implementado para la primera versión, donde se configura growthbook y se hace la integración con el UI de Growthbook
// growbook.ts
import { GrowthBook } from "@growthbook/growthbook";
const growthbook = new GrowthBook({
apiHost: process.env.GROWTHBOOK_API_HOST,
clientKey: process.env.GROWTHBOOK_API_CLIENT,
enableDevMode: true,
});
export default growthbook;
// engineRules.ts
import growthbook from "./src/libs/growthbook";
import axios from "axios";
export async function checkRuleEngineFlag() {
await syncFeatureFlags();
growthbook.setAttributes({
environment: process.env.ENVIRONMENT || "dev",
});
const isRuleEngineEnabled = growthbook.isOn("USE_RULE_ENGINE");
return isRuleEngineEnabled;
}
async function syncFeatureFlags() {
try {
const res = await axios.get(`${process.env.GROWTHBOOK_API_HOST}/api/features/${process.env.GROWTHBOOK_API_CLIENT}`);
const featuresPayload = res.data.features;
growthbook.setPayload({ features: featuresPayload });
} catch (error) {
console.error("Error sincronizando feature flags de GrowthBook:", error);
}
}
// Ejecuta el chequeo del motor de reglas en cada request
// Llamado desde el handler
const ruleEngineStatus = await checkRuleEngineFlag();
if (ruleEngineStatus) {
//Flujo con el motor de reglas
console.log("engine rules active");
} else {
// Flujo legacy
console.log("Legacy rules active");
}
Variables de entorno utilizadas
ENVIRONMENT
GROWTHBOOK_API_HOST
GROWTHBOOK_API_CLIENT