
Implementar feature flags rapidamente con Azure App Configuration
Feature flags es una de las tendencias de desarrollo que está muy de moda. Es muy probable que, si estás involucrado en algún equipo de desarrollo, ya sea que desempeñes cualquiera de los roles: frontend, backend, operaciones o testing, en tu equipo estén implementando feature flags. Si no lo están haciendo, debes saber que es una práctica que, bien aplicada, puede traerte muchos beneficios a tu ciclo de desarrollo y lanzamiento de funcionalidades.
De forma breve, es una práctica de desarrollo y operaciones que permite activar o desactivar funcionalidades en tu aplicación/sistema en “caliente”, es decir, sin necesidad de volver a desplegar.
Puedes usar feature flags para implementar personalización (cambios de colores, secciones de contenido, etc.); pruebas A/B o canary releases, donde solo un grupo/porcentaje de los usuarios puede ver la nueva funcionalidad. Por otro lado, puedes simplemente utilizar feature flags ante situaciones de incertidumbre de una funcionalidad: si después de las pruebas de ratificación hay un problema y el despliegue nació con feature flags, puedes hacer rollback rápidamente.
Para no quedar solo en la teoría, dejo un diagrama de arquitectura de cómo se puede implementar feature flags con Azure App Configuration, complementado con un repositorio de ejemplo que implementa feature flags para una aplicación React.js.

Implementación de Feature Flags con Azure App Configuration
La propuesta de esta arquitectura es implementar dos App Configuration separados e independientes: uno para el frontend y otro para el backend. La principal premisa de esta división es la protección de valores sensibles que se suelen requerir en el backend. Así, de esta manera, las aplicaciones frontend que se ejecutan desde el browser no podrán acceder a estos valores. Por lo tanto, esta propuesta logra aislamiento de responsabilidades, disminuye a cero el riesgo de exposición y facilita el gobierno entre equipos diferenciados.
Sobre el ejemplo de implementación, el repositorio solo contiene la implementación con React.js y el uso del paquete npm azure/app-configuration. Pero, de igual manera, puede implementarse con un servicio .NET, Java o Python, ya que Azure te brinda SDKs para poder conectarte fácilmente.
Feature Flags con React.js y Azure App Configuration :)
Dejo los pasos a seguir con el supuesto de que ya se tiene creado un Azure App Configuration:
Crear un Nuevo Feature Flag: Indique un nombre, habilite filtro de características y seleccione “Filtro de destinatarios” para este ejemplo. Luego, use los botones respectivos de aplicar y agregar para que la configuración se guarde.


Obtenga la cadena de conexión: Navegue a configuración de acceso y copie la cadena de conexión que reemplazará en el código para la variable de entorno VITE_AZ_CONFIG_CONN_STRING.

Habilite/Deshabilite el feature flag: Ejecute la aplicación React y pruebe habilitando el feature flag “FeatureExample”.

Feature flags es una práctica que tiene un valor real, pero, como casi toda práctica, tiene algunos contras, como los siguientes:
- Puede introducir complejidad en el código, así como dificultar la legibilidad.
- Los flags deben “limpiarse”; es decir, después de logrado el objetivo, el flag debe quitarse. Si no se hace esto, el código acumulará flags y esto incluso se puede percibir como deuda técnica.
- Sincronización y gobierno: se debe sincronizar a todos los equipos ante un nuevo flag. El frontend no puede habilitar features que no son soportados por el backend; de igual manera,
- los equipos de QA pueden enfrentarse a combinaciones de feature flags que validar, lo cual incrementa la complejidad de pruebas.
Conclusiones
- Feature flags es una práctica muy interesante, pero más allá de la moda, se debe evaluar su uso. Puede tener sentido para soluciones donde intervienen múltiples equipos, pero se tiene que poner mucho énfasis en el gobierno.
- Azure App Configuration es una gran opción para implementar feature flags si ya cuentas con recursos Azure: es fácil de administrar y de precios accesibles.
Sígueme en Linkedin para estar al tanto de mis publicaciones y novedades