Canary Testing: ¿Qué es y cómo puedes beneficiarte de él?

Publicado: 2022-08-20

Lo más probable es que, si no eres programador, nunca hayas oído hablar de las pruebas Canary. Está bien, sin embargo, probablemente se esté preguntando qué es y por qué se llama prueba canary.

El término deriva de la frase “canario en la mina de carbón”. Verá, los mineros del carbón solían llevar un canario enjaulado a la mina de carbón con ellos, ya que los canarios tienen una menor tolerancia a los gases tóxicos.

Por lo tanto, los trabajadores sabían que si el canario moría, debían salir de la mina. En términos de desarrollo de software, al crear un nuevo software, el objetivo es detectar y resolver problemas lo más rápido posible, antes de que se conviertan en un problema para los usuarios.

meme canario

¿Qué es Canary Testing?

Canary testing es el método de probar nuevas funcionalidades y características con un impacto negativo mínimo para el usuario final. Este tipo de pruebas se suele utilizar con un grupo reducido de usuarios, para los que se presenta la aplicación con pequeños cambios. De esta forma, la mayoría de los usuarios seguirán utilizando la versión actual del software, mientras que el grupo más pequeño de usuarios seleccionado utilizará una versión ligeramente mejorada.

El propósito de este ejercicio es permitir que la mayoría de las personas que usan el software continúen trabajando con él, sin ningún problema, mientras impulsan cambios solo para un pequeño porcentaje de usuarios.

Todo esto se hace manteniendo tanto la versión existente como la nueva de la aplicación ejecutándose simultáneamente. Luego, si la prueba canary no arroja ningún error, puede continuar ampliándola a porcentajes más grandes de usuarios.

Los lectores también disfrutan : ¿Qué es el desarrollo rápido de aplicaciones? 4 Fases de la Metodología RAD – DevriX

¿Cómo realizar una prueba de Canarias?

El primer paso en una prueba Canary es lanzar un conjunto de servidores back-end o contenedores para ejecutar el nuevo código. Una vez que haya nuevos usuarios, su balanceador de carga enviará un porcentaje de ellos al "clúster canario".

Luego, los especialistas en DevOps monitorean los servidores para identificar posibles problemas, como la carga de cómputo o tasas más altas de E/S. Y tenga en cuenta que, incluso si ocurren problemas serios, es fácil revertir las cosas a como estaban, ya que el proceso no afecta a todos los que usan el software.

De lo contrario, puede implementar y automatizar fácilmente las pruebas canary mediante el uso de herramientas como Spinnaker para designar la cantidad de usuarios que utilizan el nuevo código.

Dicho porcentaje suele ser de alrededor del 5 % y, una vez que el equipo de DevOps asignado establece que no hay problemas, puede aumentar ese porcentaje de manera constante, hasta que todos estén usando la nueva versión del código de la aplicación.

Además, las pruebas canary son beneficiosas en situaciones en las que los entornos de desarrollo o ensayo no coinciden completamente con el entorno de producción. El uso de un pequeño grupo de prueba de usuarios puede revelar cualquier problema que no se detectó durante los entornos de ensayo o desarrollo.

Los lectores también disfrutan : Pruebas A/B con WordPress: la guía definitiva – DevriX

Beneficios y desventajas de Canary Testing

Definamos lo bueno y lo malo cuando se trata de pruebas, usando el método canary.

Pros y contras de Canary Testing

Beneficios de Canary Testing

  • Pruebas del mundo real . Probar en entornos internos cerrados es excelente, sin embargo, poder probar el software en usuarios reales es lo que lo lleva un paso más allá. Con las implementaciones canary, puede hacer exactamente eso: probar su aplicación en una audiencia a pequeña escala, sin el riesgo de lanzar una aplicación completamente nueva.
  • Mejor gestión de riesgos . Lanzar gradualmente nuevas funciones y asegurarse de que funcionen correctamente reduce en gran medida los errores significativos y el costo total de cualquier falla.
    Al utilizar el método de prueba Canary, básicamente elimina la necesidad de revertir actualizaciones importantes o reescribir grandes cantidades de código.
  • Más orientado a los negocios . ¿Necesita presentar datos comerciales a gerentes y personal de marketing/ventas? Con Canary, puede ver los resultados muy rápidamente. Por ejemplo, si desea probar una nueva función de software, puede implementar una nueva función para un pequeño grupo de usuarios y luego esperar para ver si la función funciona bien o no. Luego puede usar estos datos para aumentar la participación de tu producto.

Inconvenientes de Canary Testing

  • Problemas de software . Todavía hay código sin probar, por lo que, naturalmente, hay riesgos involucrados. En caso de que incluso algunos usuarios experimenten problemas significativos con una función específica, es mejor omitir las pruebas canarias en favor de pruebas internas más estrictas.
  • Mayores gastos . Si tiene la intención de usar un balanceador de carga para particionar usuarios, necesitará infraestructura adicional y más administración. Esto significa que tendrá que crear dos entornos de producción y backends separados para ejecutar la prueba. Entonces, dos servidores de aplicaciones, dos líneas de código, dos servidores web y una infraestructura de red para mantener.
  • Mala experiencia de usuario . Es posible que algunos usuarios no estén muy interesados ​​en la idea de ser utilizados como sujetos de prueba. Si quiere ser abierto sobre lo que está pasando, puede informar a los usuarios que están siendo utilizados como "canarios", a través de un programa de "adopción temprana" o algo similar.

¿Cuándo no usar Canary Testing?

Canary testing es beneficioso en muchos casos, sin embargo, no es una respuesta segura para todo (eso es 42).

Aquí es cuando definitivamente no deberías usar el enfoque canario:

  • En entornos que no son adecuados para el despliegue continuo.
  • Cuando se trata de software crítico como sistemas de soporte vital o reactores nucleares.
  • Sistemas financieros donde la falla puede resultar en un impacto económico sustancial.

Cuando no puede actualizar el software de forma remota.

¿Cómo hacer una implementación canaria?

Ahora, echemos un vistazo a los pasos necesarios que debe seguir para realizar una implementación canary.

  1. Prepárese para la implementación en el servidor de ensayo.
  2. Excluir nodos canarios a través del balanceo de carga.
  3. Implemente la nueva versión en los nodos canarios.
  4. Pruebe la nueva versión con scripts de prueba automatizados.
  5. Conecte nodos canary al tráfico con equilibrio de carga.
  6. Implemente la actualización en los nodos de producción restantes.

En la práctica, la implementación comienza con la preparación del servidor de ensayo. Verifique los archivos de configuración, las secuencias de comandos de prueba, los artefactos de compilación, etc. Después de eso, puede ejecutar pruebas automáticas o manuales, o dejar el servidor activo y ver si todo funciona bien o si falla.

¿Cuándo llevar Canary a la producción?

Una vez que haya probado su actualización Canary en el 5 o el 10 % de los usuarios, y todo funcione correctamente, puede proceder a duplicar o triplicar el porcentaje de usuarios de prueba.

Luego, vuelva a probar, recopile los comentarios de las métricas y, una vez que haya evaluado que todo funciona bien, una vez más, puede actualizar el 70 % del entorno de producción.

Finalmente, repita el procedimiento de prueba y, si todo está bien, implemente la nueva versión del software para el 100% de los usuarios y, por supuesto, continúe con el monitoreo.

Empresas que han implementado Canary Deployment

Para mostrarle que la implementación canary es un método popular de implementación, echaremos un vistazo a algunas empresas que utilizan la implementación canary.

netflix

El gigante del servicio de transmisión ha estado utilizando análisis canary automatizados con Kayenta desde 2018. Esto permite actualizaciones extremadamente rápidas en el entorno de producción de Netflix. La empresa afirma que este método de implementación ha aumentado la productividad de los desarrolladores al tiempo que reduce el riesgo de realizar cambios en su entorno de producción.

Instagram

Esta plataforma de redes sociales también ha sido fanática desde hace mucho tiempo del despliegue canario. Su cofundador y CTO, Mike Krieger, compartió que los lanzamientos canary aseguran que los errores no causen demasiado daño y solo afecten a un pequeño grupo de personas.

Google

¿Sabías que Google Chrome tiene una versión especial para desarrolladores? Así es, Google Chrome Canary te permite probar las API de la nueva plataforma web y ver cómo sería el futuro del navegador antes que nadie.

microsoft

Microsoft utiliza su propio personal para probar todas las actualizaciones de sus productos. El proceso ha estado en vigor desde Windows Vista y Microsoft Azure. La actualización de Windows 10 también se realizó mediante actualizaciones Canary de los sistemas operativos de su personal.

Resumen

Canary testing es una excelente manera de introducir nuevas versiones de aplicaciones rápidamente, en entornos de prueba del mundo real. No solo eso, sino que permite una mejor gestión de riesgos y más datos rastreables.

A pesar de que las pruebas Canary tienen tantos beneficios, no siempre son la solución para todas las situaciones. Asegúrese de investigar antes de comenzar una implementación canary, de lo contrario, podría resultar contraproducente para usted.