Durante el desarrollo ascendente, queremos mostrar el progreso del sistema de IA. Por ejemplo, en un entorno de desarrollo, UAT o QA. Sin embargo, aún no queremos lanzar esta función a medio cocinar a producción. Por lo tanto, necesitamos una forma de utilizar tanto el generador de números aleatorios matemáticos como el generador de números aleatorios basado en IA, dependiendo del entorno.
Este es el código inicial que utiliza un generador de números aleatorios matemáticos para servir un cómic aleatorio. Ahora, veamos cómo el feature flag puede hacer que la aplicación web sirva un cómic tanto del generador de números aleatorios matemáticos como del generador de números aleatorios basado en IA. En la línea seis, verificamos un feature flag llamado feature flag AI randomizer. Cuando está activado, utilizamos el generador de números aleatorios basado en IA para servir el cómic. Cuando está desactivado, utilizamos el generador de números aleatorios matemáticos en su lugar. El feature flag se almacena como una variable de entorno. En el entorno de desarrollo, el valor se establece en activado, mientras que en producción, el valor se establece en desactivado. De esta manera, podemos construir y desplegar de manera segura el código del generador de números aleatorios basado en IA poco a poco y de manera regular tanto en desarrollo como en producción. Se puede probar continuamente en desarrollo sin afectar a los usuarios de producción. Una vez que la función del generador de números aleatorios basado en IA está completa, podemos activar el flag en producción. Ahí es cuando lanzamos la función. Sin embargo, el código en sí ha estado inactivo en producción durante un tiempo. Así es como se utiliza el feature flagging. Este ejemplo es para el feature flagging del backend. Una ventaja de esta técnica es que es muy versátil y se puede utilizar en otras partes del software. Por ejemplo, en el código del front-end de una aplicación web o una aplicación móvil.
Bien, ¿qué hay de las pruebas automatizadas? ¿Cómo vamos a probar las funciones con flags? Veamos la prueba para este código. Esta es la prueba inicial cuando la aplicación web solo utiliza el generador de números aleatorios matemáticos. Cuando se llama a la API de números aleatorios, debe devolver un cómic falso, que es el único cómic almacenado en el almacenamiento de datos de prueba. Cuando se introduce el flag, establecemos explícitamente el flag en desactivado para la prueba existente. Luego agregamos una prueba cuando el flag está activado. De esta manera, tenemos pruebas automatizadas tanto cuando el flag está activado como cuando está desactivado. Para este ejemplo en particular, la prueba es similar. Devuelven el cómic falso tanto cuando el flag está activado como cuando está desactivado. Esto se debe a que solo tenemos un cómic falso en nuestro almacenamiento de datos de prueba. En muchos casos, una nueva función tiene un comportamiento diferente y, por lo tanto, pruebas diferentes cuando el flag está activado y desactivado.
Entonces, acabamos de repasar el arte secreto del feature flagging. En resumen, comenzamos introduciendo el flag, probamos tanto cuando el flag está activado como cuando está desactivado, y luego escribimos el código de implementación tanto cuando el flag está activado como cuando está desactivado. Nos aseguramos de que el flag esté activado en DEV y desactivado en PROD. Luego desplegamos el código en DEV y también lo desplegamos en producción, y estará inactivo en producción porque el flag está desactivado. Una vez que la función está completa y queremos lanzarla, activamos el flag en PROD. Y una vez que estamos seguros de que la función ha estado comportándose de manera esperada en PROD durante un tiempo, podemos eliminar el código de implementación cuando el flag está desactivado, eliminar la prueba cuando el flag está desactivado. Y una vez que estamos seguros de que el flag no se utiliza en ningún lugar, lo eliminamos. Así es el arte secreto del feature flagging. Muchas gracias por su tiempo, y comencemos con el feature flagging.
Comments