¿Qué son las Feature Flags y para qué sirven? Una Feature Flag, también conocida como “feature toggle” o “feature switch”, es una técnica de desarrollo de software que permite habilitar o deshabilitar una funcionalidad específica del software. Esto se consigue sin tener que modificar el código fuente y realizar una nueva compilación y despliegue del software.
En esencia, una feature flag es una variable booleana que indica si una determinada funcionalidad o Feature está habilitada o deshabilitada.
Feature Flag: (Feature, Context) -> true/false
El contexto es toda aquella información que tenemos disponible para tomar la decisión de si una Feature va a estar activa o no en un momento dado. Por ejemplo:
- El email del usuario.
- La fecha actual.
- El entorno de la plataforma (development, staging, production).
- El país desde donde se realiza la petición.
- El plan que tiene contratado el cliente que visita la página.
- …
¿Para qué queremos Feature Flags?
Si envolvemos nuestras Features con Feature Flags, conseguimos los siguientes beneficios o casos de uso:
- Pruebas A/B: Las feature flags permiten a los desarrolladores realizar pruebas A/B para comparar el rendimiento de diferentes versiones de una funcionalidad y tomar decisiones basadas en datos sobre qué versión lanzar. Más información en el post ¿Cómo definir un test A/B para una funcionalidad?
- Lanzamiento gradual de nuevas funcionalidades: Las Feature Flags permiten a los desarrolladores lanzar nuevas funcionalidades de forma gradual, para un conjunto limitado de usuarios o en entornos específicos, y realizar pruebas para asegurarse de que todo funciona correctamente antes de lanzar la funcionalidad a todos los usuarios.
- Reducción de riesgos: Las Feature Flags permiten a los desarrolladores probar nuevas funcionalidades en producción sin tener que realizar cambios importantes en el código fuente y sin tener que realizar una nueva compilación y despliegue del software.
- Control de acceso: Las Feature Flags también se utilizan para controlar el acceso a funcionalidades específicas en función de diferentes factores, como la ubicación del usuario, el nivel de permisos, etc.
- Desactivación de funcionalidades: Las Feature Flags permiten a los desarrolladores desactivar funcionalidades específicas del software en caso de problemas o errores, sin tener que realizar cambios importantes en el código fuente y sin tener que realizar una nueva compilación y despliegue del software.
Si permitimos que estas Feature Flags se configuren fuera del código, permitimos desacoplar la gestión de las Features de su programación.