Feature flags permiten desacoplar deploy de release. Deployas código, pero decides cuándo activarlo. Eso es poder.
Casos de uso: release seguro, testing, experimentation
Release seguro: deployas feature pero está desactivada. Habilitas para 1% usuarios, monitoreas, expandes.
Testing: testea feature con usuarios reales sin rotura.
Experimentation: compara versión A vs B directamente en usuarios reales.
- Canary release: 1% → 10% → 100%.
- A/B testing: 50% usuarios ven A, 50% ven B.
- Rollback instant: desactiva flag en segundos.
Implementación simple: contexto del usuario
Cuando usuario hace request, checas: debería ver esta feature? Basado en flag, usuario ID, país, etc.
Eso es simple: if feature_enabled('new-checkout', user_id) { ... }
- Define feature flag con rule set.
- Checkea en código si está habilitada.
- Si sí, mostrar nueva feature.
Herramientas: LaunchDarkly, Unleash, Statsig
LaunchDarkly es SaaS potente. Unleash es self-hosted. Statsig combina flags y experimentation.
Para empezar, incluso un archivo JSON con flags es suficiente. Escala cuando necesites.
- SaaS: LaunchDarkly, Statsig.
- Self-hosted: Unleash.
- DIY: Redis + polling o eventos.
Limpiar flags viejos
Si un flag está activado para todos hace 3 meses, es deuda técnica. Limpia: remueve el flag, simplifica el código.
Sin limpieza, el código se llena de banderas viejas que confunden.
Feature flags son para deciciones temporales. Una vez decidido, limpia el código. De otro modo acumulas complejidad.
Analytics + flags: cuantifica impacto
Correlaciona eventos de feature flag (user vio versión A vs B) con outcomes (conversion, retention). Eso te dice si feature es realmente mejor.
Sin eso, no sabes si cambio fue bueno o luck.