Bien, así que ese fue el ciclo de vida. La gran conclusión allí, por supuesto, nuevamente, es esta gestión de flags obsoletos, probablemente la parte más difícil sobre los feature flags a escala, para ser honesto. Ahora hablemos sobre la tercera pared, que es la arquitectura. Y la arquitectura va a tener dos partes. La primera será pruebas, y luego la segunda estará más enfocada en infraestructura. Así que las pruebas son realmente interesantes con los feature flags. Y por interesantes, quiero decir realmente difíciles. Y eso es debido a la explosión combinatoria. ¿Qué quiero decir con explosión combinatoria? Bueno, con cinco flags Booleanos, lo cual, correcto, eso es bastante simple. Cinco flags Booleanos encendidos o apagados, ya tienes 32 combinaciones. Si subes a 20 flags que son solo encendidos o apagados, eso es más de un millón de combinaciones. Y el problema es, también, si tienes un millón de combinaciones en tu base de código, ¿cómo vas a probar todas esas combinaciones? Incluso si esas tomaran solo un segundo por prueba, eso aún serían 12 días de pruebas continuas. Simplemente no es posible. Así que el gran problema es cómo lidiar con este hecho de que con más feature flags, especialmente feature flags que son más complejos, imagina si no fueran flags Booleanos, sino que tuvieran una lógica mucho más compleja asociada a ellos, ¿cómo vas a probarlo? Bueno, la verdad del asunto es que no puedes probar cada combinación. Simplemente no es físicamente posible. Así que las recomendaciones aquí son las siguientes. Así que la primera es probar rutas críticas. ¿Y qué significa eso? Básicamente, esas rutas que sabes son esenciales para el funcionamiento de tu aplicación, esas son las rutas que quieres probar primero. Esto tiene sentido, pero es solo algo a tener en cuenta. El otro lado de eso es también probar estados de producción. Así que piensa en esto con esos 20 flags, si hay una cierta configuración encendida y apagada de cada uno de esos flags que va a ser más prevalente en producción, esa es obviamente una configuración que quieres probar y asegurarte de que eso sea parte de, ya sabes, las pruebas en el futuro. Otra forma en que puedes abordar esto, que se está volviendo más y más común para cada proveedor de feature flags, es hacer algo que llamamos implementaciones seguras, y podría tener diferentes nombres, pero la idea aquí es que cada característica que lanzas con un feature flag que adjuntas básicamente una prueba EB a ella que te permite verificar algún tipo de tasa de fallos. Si esa tasa de fallos se activa, entonces la característica se revierte automáticamente. Por ejemplo, cómo funcionaría esto, digamos que estás probando una nueva característica de flujo de pago. Dirías que si la tasa de fallos del pago supera algún tipo de porcentaje, entonces revierte automáticamente esta característica. Esto te permite tener algo de tranquilidad cuando estás usando un feature flag con una nueva característica que obtienes este retroceso automático si las cosas van mal, y, por supuesto, a veces lo harán. Otra gran herramienta para buscar en tu plataforma de feature flags es algún tipo de herramienta que te permita mirar la aplicación real y simular diferentes estados de feature flags, estados de experimentos, y te mostraré un video de esto. Esto se vuelve realmente útil para mirar, bueno, si tengo este tipo de usuario o este tipo de atributo, ¿cómo va a funcionar realmente el flag en la aplicación? Si tienes una herramienta que te permite hacer esto fácilmente, te permite detectar muchos errores antes de la producción, o si tienes un error en producción, hace mucho más fácil depurar lo que está pasando. Y luego dos más fáciles, minimizar el anidamiento y las dependencias. Puedes entrar en una situación donde un flag va a depender del resultado de otro, y así deberías seguir simplemente buenos principios para el código donde estás modularizando cosas, tratando de minimizar ese anidamiento y dependencia tanto como sea posible.
Comments