Marcas de características - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Marcas de características

Los indicadores de características se pueden implementar en las microinterfaces para facilitar la coordinación de las pruebas y el lanzamiento de funciones en varios entornos. La técnica de los marcadores de características consiste en centralizar las decisiones en una tienda basada en valores booleanos y, en función de ello, impulsar el comportamiento. Suele utilizarse para propagar de forma silenciosa cambios que pueden mantenerse ocultos hasta un momento concreto. Además, permite desbloquear nuevas versiones de nuevas funciones que, de otro modo, quedarían bloqueadas, lo que reduce la velocidad del equipo.

Pensemos en el ejemplo de equipos que trabajan en una función de microinterfaz que se lanzará en una fecha específica. La función está lista, pero debe publicarse junto con un cambio en otra microinterfaz que se publique de forma independiente. Bloquear el lanzamiento de ambas microinterfaces se consideraría contrario al patrón y aumentaría el riesgo una vez implementadas.

En su lugar, los equipos pueden crear un marcador de características booleano en una base de datos que ambos utilicen durante el procesamiento (por ejemplo, mediante una llamada HTTP a una API de Feature Flags compartida). Los equipos pueden incluso publicar el cambio en un entorno de prueba en el que el valor booleano esté establecido para verificar los requisitos funcionales y no funcionales de todos los proyectos antes de lanzarlos True a producción.

Otro ejemplo del uso de un indicador de función es la implementación de un mecanismo para anular el valor de un indicador estableciendo un valor específico a través del QueryString parámetro o almacenando una cadena de prueba determinada en una cookie. Los propietarios de los productos pueden iterar las funciones sin bloquear el lanzamiento de otras funciones ni corregir errores hasta la fecha de lanzamiento. En una fecha determinada, si se cambia el valor del indicador en la base de datos, el cambio se hace visible de forma instantánea en la fase de producción, sin necesidad de realizar publicaciones coordinadas entre equipos. Tras el lanzamiento de una función, los equipos de desarrollo limpian el código para eliminar el comportamiento anterior.

Otros casos de uso incluyen el lanzamiento de un sistema de indicadores de características basado en el contexto. Por ejemplo, si un solo sitio web atiende a clientes en varios idiomas, es posible que una función solo esté disponible para los visitantes de un país en particular. El sistema de indicadores de características puede depender de que el consumidor envíe el contexto del país (por ejemplo, utilizando el encabezado Accept-Language HTTP), y puede haber un comportamiento diferente en función de ese contexto.

Si bien los marcadores de características son una herramienta poderosa para facilitar la colaboración entre los desarrolladores y los propietarios de los productos, dependen de la diligencia de las personas para evitar una degradación significativa de la base de código. Mantener los indicadores activos en varias funciones puede aumentar la complejidad a la hora de solucionar problemas, aumentar el tamaño de los JavaScript paquetes y, en última instancia, acumular deudas técnicas. Entre las actividades de mitigación más comunes se incluyen las siguientes:

  • Se realizan pruebas unitarias de cada función detrás de una bandera para reducir la probabilidad de que se produzcan errores, lo que puede provocar ciclos de retroalimentación más largos en los procesos automatizados de CI/CD que ejecutan las pruebas

  • La creación de herramientas para medir el tamaño de los paquetes aumenta durante los cambios de código, lo que se puede mitigar durante las revisiones del código

AWS ofrece una gama de soluciones para optimizar las pruebas A/B in situ mediante el uso de Amazon CloudFront Functions o Lambda @Edge. Estos enfoques ayudan a reducir la complejidad de integrar una solución o el producto SaaS existente que está utilizando para hacer valer sus suposiciones. Para obtener más información, consulte las pruebas A/B.