Como hacer un Análisis de Canario con Kayenta
Tiempo de lectura: 4 minutos
Un Canary Deployment o despliegue de canario es una estrategia de despliegue de software usada para reducir el riesgo de desplegar una nueva versión de una aplicación o servicio en producción. La nueva versión, llamada canario, se distribuye inicialmente a un subconjunto de los usuarios.
La aplicación es monitoreada en busca de errores u otras anomalías que puedan haber sido introducidas por la nueva versión del software y, si ninguna se detecta, entonces la nueva versión puede ser distribuida al resto de la infraestructura para que sea visible por todos los usuarios. Este proceso se explica con el siguiente diagrama:
Sin embargo, el monitoreo requerido para determinar si una nueva versión puede ser distribuida a todos puede ser difícil. Para estar seguros de que los nuevos cambios no introducen ningún problema, los desarrolladores deben analizar métricas como el uso de recursos del sistema, la latencia, o errores de la aplicación.
Las métricas producidas por la versión canario se comparan con la versión anterior en busca de diferencias significativas entre ellas. Este proceso de monitoreo y análisis puede requerir mucho tiempo, además de ser propenso a errores humanos.
Aquí es donde Kayenta entra en juego. Kayenta es una herramienta de código abierto desarrollada por Netflix que realiza análisis de canario de forma automatizada. Recoge una lista de métricas producidas por el canario y la versión anterior, y las compara usando métodos estadísticos para obtener un resultado global.
En este artículo aprenderemos cómo automatizar los análisis de canarios usando Kayenta, para hacer los despliegues más rápidos y seguros.
Requisitos previos
- Git.
- Una cuenta en una plataforma de monitorización de datos y una clave API. En este artículo se usará Datadog.
- Yarn.
- Docker.
- Docker Compose.
- Node.js versión 10 o superior.
Configuración del entorno del proyecto
Para descargar Kayenta, clona el repositorio de Github:
También usaremos Referee, una UI para Kayenta. Para descargarlo, clona el repositorio de Github:
También será necesario tener una infraestructura con dos servidores para desplegar las dos versiones. Estos servidores pueden ser instancias de Amazon EC2, por ejemplo. Tus instancias deben tener instalado y configurado el datadog-agent para que puedan emitir métricas a Datadog.
Kayenta Configuration
En primer lugar debemos configurar Kayenta para que sepa donde almacenar los resultados y que tipo de métricas debe analizar. Para ello, navega al archivo de configuración que se encuentra en la carpeta kayenta-web/config. Abre el archivo kayenta.yml en un editor de texto. Para habilitar el almacenamiento local, añade las siguientes líneas a la sección de memory
del archivo
A continuación añade las siguientes líneas para que Kayenta pueda usar Datadog para obtener las métricas. Asegúrate de usar tus propios valores para la clave API y la application key.
Ejecuta Kayenta y Referee
El siguiente paso es construir y ejecutar Kayenta y Referee.
Para construir Kayenta, ejecuta el siguiente comando en una terminal desde el archivo raíz de Kayenta:
Para construir Referee, abre una nueva ventana en la terminal, navega al archivo raíz de Referee y ejecuta lo siguiente:
Deberías ver lo siguiente en http://localhost:3000/:
Empezar un análisis de canario
En este momento ya estamos preparados para empezar un análisis. En la página http://localhost:3000/, haz clic en Configuration y elige la opción de Create a New Kayenta Canary Config. Seleccione Datadog como el tipo de métricas y da a tu configuración un nombre y una descripción.
A continuación añadiremos la lista de métricas que queremos analizar.
Haz click en el botón de Add Group para crear un grupo. Los grupos se usan para la puntuación global del análisis y para agrupar tus métricas siguiendo algún criterio.
Ahora, haz click en Add metric y rellena el formulario. En este ejemplo lo rellenamos con Groups con el valor “Grupo demo”, Name como “Consumo de CPU”, Fail On con el valor “Increase” (esto significa que si los valores del canario aumentan con respecto a la versión anterior, la métrica fallará) y la consulta de Datadog, que para el consumo de CPU es “system.cpu.user”. El valor ${scope}
dentro de la consulta se usa a modo de plantilla, que será automáticamente generada por Kayenta durante el análisis.
Haz click en el botón de Save Metric en la esquina inferior derecha cuando termines.
Una vez que hayas añadido todas las métricas que quieres analizar, da un peso a tus grupos. Puedes pesarlos en base al número de métricas que tenga cada uno, o lo importantes que son. Si tienes múltiples grupos, asegúrate de que suman 100.
Ahora, haz click en Test Config para avanzar al último paso. Aquí es donde definiremos el alcance del canario y la versión anterior, y la duración del análisis.
Selecciona A-B en testing type para comparar distintos scopes y rellena el formulario. El control scope y experiment scope deben contener la etiqueta usada para identificar los hosts del canario y la versión anterior. En este ejemplo se ha usado la etiqueta host de Datadog.
Introduce la localización de los hosts y dales un tiempo inicial y final al análisis.
Haz click en Run Manual Execution. Los resultados aparecerán en segundos. Como puedes ver en el siguiente ejemplo, el consumo de CPU para el canario y la versión anterior sigue una distribución similar, no hay una pérdida significativa en el rendimiento, por lo que el resultado es Pass.
Siguientes pasos para análisis de canarios
¡Felicidades en tu primer análisis de canario! Si eres un desarrollador trabajando en servicios o aplicaciones que requieren una disponibilidad muy alta, entonces sabes lo importante que es tener un pipeline de despliegue seguro.
Si te gustaría integrar Kayenta en tus despliegues, o simplemente quieres aprender más, puedes leer este blog de Netflix sobre Análisis de Canarios Automatizado o este artículo en Medium sobre análisis automatizado de canario para despliegue.
Ismael Hernández Muñoz es un Software Development Engineer Intern en el equipo de Video. Durante su internship, ayudó a su equipo haciendo sus despliegues más seguros y menos propensos a errores. Le apasiona aprender nuevas tecnologías y crecer como ingeniero. Puede ser contactado a través de LinkedIn.
Publicaciones relacionadas
Recursos relacionados
Twilio Docs
Desde API hasta SDK y aplicaciones de muestra
Documentación de referencia de API, SDK, bibliotecas auxiliares, inicios rápidos y tutoriales para su idioma y plataforma.
Centro de Recursos
Los últimos libros electrónicos, informes de la industria y seminarios web
Aprenda de los expertos en participación del cliente para mejorar su propia comunicación.
Ahoy
Centro de la comunidad de desarrolladores de Twilio
Mejores prácticas, ejemplos de códigos e inspiración para crear comunicaciones y experiencias de participación digital.