Feature flag
Un feature flag es un interruptor en tiempo de ejecución que activa o desactiva una funcionalidad para algunos o todos los usuarios sin desplegar código nuevo.
Un feature flag envuelve un camino del código en una condición cuyo valor viene de la configuración. El código del comportamiento nuevo se despliega en producción y queda inactivo hasta que se enciende el flag. Así se separan dos eventos que antes eran uno: desplegar código y lanzar una funcionalidad.
Los flags se pueden evaluar de forma global, por ambiente, por cliente o para un porcentaje de usuarios. Los valores suelen venir de un servicio de flags o de un endpoint de configuración, así que pueden cambiar sin un build.
Ejemplo
Durante una migración, la nueva versión Angular de la pantalla de pedidos se despliega junto a la vieja. Un flag decide cuál recibe cada usuario:
const routes: Routes = [
{
path: 'orders',
canMatch: [() => inject(FlagService).isOn('new-orders')],
loadComponent: () =>
import('./orders/orders.component').then(m => m.OrdersComponent),
},
{ path: 'orders', component: LegacyOrdersWrapperComponent },
];
El equipo activa new-orders primero para usuarios internos, luego para un cliente y después para todos. Si aparece un problema, apagar el flag devuelve la pantalla vieja sin un despliegue.
Confusión frecuente
Los flags se suelen ver como gratuitos. Cada flag duplica los caminos de una parte del código, y ambos caminos necesitan pruebas. Los flags que quedan después del lanzamiento se vuelven configuración permanente que nadie se atreve a quitar. Asigna a cada flag un dueño y una fecha de retiro, y borra el flag y el camino viejo cuando el lanzamiento termine.
Un flag tampoco puede deshacerlo todo. Si el camino nuevo escribió datos en un formato nuevo, volver atrás requiere un plan para esos datos. En migrar sin downtime se explica cómo encajan los flags en una migración ruta por ruta.
Por qué importa. Los flags permiten que las pantallas migradas lleguen temprano a producción y se muestren a los usuarios de forma gradual, con un camino rápido de vuelta a la pantalla legacy si algo falla.
Términos relacionados
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn