Rompiendo cosas con Azure Chaos StudioRompiendo cosas con Azure Chaos Studio

¡Hola a todos!

Cómo es habitual en este blog, vamos hablando de distintas temáticas relacionadas con Azure o con otras tecnologías de Microsoft, y hoy os traigo una de esas herramientas de Microsoft Azure que, si bien podría ser rara a primera vista, se ha transformado en un recurso más que útil para aquellos que queremos garantizar que nuestras aplicaciones son realmente resilientes.

Azure Chaos Studio (https://azure.microsoft.com/es-es/products/chaos-studio) nos permite desatar un caos controlado, completamente planificado que nos ayudará a hacer nuestros aplicativos y sistemas mucho más fuertes.

Sí, básicamente consiste en romper cosas a propósito en un entorno de pruebas para preservar mejor nuestros entornos de producción. Esto es especialmente interesante para aquellos que trabajan sobre arquitecturas distribuidas, microservicios, o cualquier sistema que no podamos permitirnos que se caiga, como los famosos Mission Critical.

¿Qué es Azure Chaos Studio?

Azure Chaos Studio es un servicio gestionado de Microsoft Azure que fue diseñado para hacer todas las pruebas de resiliencia que necesitemos para mejorar nuestra infraestructura, mediante lo que se conoce como ingeniería del caos (Y sí, haremos un artículo sobre eso, porque es la caña).

Básicamente, la ingeniería del caos consiste en simular fallos reales dentro de nuestros entornos, normalmente de pruebas, pero si quieres saber lo que es realmente el caos realízalas en producción, para ver cómo se comportan las aplicaciones y los sistemas, si lo soportan, si mueren, si se recuperan bien, se caen, si nos enteramos a tiempo, y un largo etc. de posibilidades, con lo que Azure Chaos Studio nos pone mucho más fácil responder a todas estas preguntas y a alguna más.

Es como cuando hacemos simulacros de incendio en un edificio, no es que queramos tener uno, pero queremos saber si estamos preparados y que puede salir mal para mejorarlo, que debemos optimizar, que debemos cambiar, básicamente necesitamos estar preparados por si pasa, para que la empresa no deje de funcionar, sino que se recupere o antes posible. Mientras escribo esto, ecos en mi cabeza repiten… ISO 22301… Sistemas de Gestión de Continuidad del Negocio, necesitas ponerlo en marcha…

¿Por qué deberíamos hacer ingeniería del caos?

Porque todo falla, no es bueno que nuestra infraestructura forme parte de ese todo. No importa lo bien diseñada que esté una arquitectura, tarde o temprano vamos a enfrentarnos a un error de cualquier tipo, ya sea de red, a la caída de un nodo, a la sobrecarga del tráfico de nuestras app, o nuestra web, o a un mal diseño o mala configuración que termina por tirar toda nuestra infraestructura abajo.

El concepto del Chaos Engineering no es nuevo, sino que viene del mundo empresarial, de empresas como Netflix que fueron los pioneros, y desde entonces se ha convertido en una práctica común en el mundo de los DevOps y el SRE.

Con Azure Chaos Studio, ahora podremos hacer todas estas pruebas de manera nativa ya que está dado de alta dentro de nuestro ecosistema Azure, y esto nos proporciona toda la potencia de la nube púbica de Microsoft y sin la necesidad de instalar o desplegar herramientas externas.

Muy bonito, pero… ¿Cómo funciona Azure Chaos Studio?

Azure Chaos Studio nos va a permitir lanzar nuestro experimentos controlados sobre nuestros recursos de Azure, y estos experimentos estarán formados por distintas acciones encaminadas a forzar fallos dentro de nuestros entornos simulados, que pueden afectar a los distintos servicios como por ejemplo a las máquinas virtuales, las bases de datos, las redes, los contenedores, etc. o sea a todo cuanto tenemos desplegado.

Aquí podemos ver un esquema de como funciona esto: https://azure.microsoft.com/en-us/blog/wp-content/uploads/2024/02/Azure-Chaos-Studio.webp

Esquema de funcionamiento de Azure Chaos Studio

La forma de operar es la siguiente, ya que cada experimento tiene una estructura sencilla; para comenzar, debemos definir los objetivos, en lo qué decimos que recurso o sistema vamos a atacar, por ejemplo, una máquina virtual, una base de datos, un AKS, etc. A continuación, describimos las acciones, o sea, qué tipo de fallo o fallos vamos a simular, desde el reinicio de una máquina virtual, a la pérdida de conectividad, pasando por cosas como las latencias de red, etc. Tendremos que definir el tiempo y las condiciones de cuándo queremos hacerlo y durante cuánto tiempo queremos mantenerlo, por último, deberemos definir las medidas de observación de cómo vamos a monitorizar los efectos, si vamos a usar Azure Monitor, Application Insights, o cualquier otra opción que se nos ocurra.

NOTA: Algo muy interesante es que podemos combinar distintas pruebas y fallos en series o grupos para de esta manera crear experimentos más complejos y realistas.

¿Es esto seguro?

Azure Chaos Studio es una solución segura y tiene distintas capas de seguridad y control para evitar que toda arda de verdad (más allá de las pruebas). Tenemos distintas medidas destinadas a proteger todo. Se integra perfectamente con Azure Monitor y Log Analytics, por lo que podremos ver en tiempo real qué está pasando realmente en la infraestructura. A través de esta herramienta tendremos control absoluto sobre qué acciones se aplican, en qué orden y durante cuánto tiempo. Podremos automatizar la ejecución para integrarlas en pipelines de CI/CD o en rutinas de pruebas periódicas que tengamos más que probadas. Podremos lanzar los experimentos solo en los recursos específicos que nos interesen y todo cuanto se ejecute podrá ser en modo observación o ejecución real, según prefieras.

Es importante decir que para mayor seguridad, Microsoft recomienda que empecemos por hacer las pruebas en entornos de pruebas hasta que tengamos mayor soltura y control de la solución; y cuando tengamos más claro todo podremos mover esos experimentos a producción con las precauciones necesarias.

¿Qué ganamos con todo esto?

¿En serio no te lo imaginas? Bueno, pues te lo cuento, aunque deberías verlo sin más jejejeje Hay varios beneficios que quedan claros en cuanto comienzas a usar Azure Chaos Studio de forma más o menos recurrente. Para comenzar, podemos decir que nos ayudará en el entrenamiento de nuestro equipo de soporte ya que les permitirá preparase para responder de manera más o menos rápida ante los problemas que se vayan probando. También nos ayudará a mejorar el diseño de nuestra infraestructura la que descubriremos los puntos débiles que no hayamos considerado, esto as su vez desembocará en una mejor confianza en la arquitectura ya que sabremos que los sistemas son resistentes a fallos reales y no es que se cumpla una simple ISO. Esto también nos ayudará con el cumplimiento normativo y con el cumplimiento de los SLA (Acuerdos de Nivel de Servicio) y con los objetivos de resiliencia (SLO) con datos reales, no solo con la teoría. Por último, nos ayuda a desarrollar mejor nuestra cultura de DevOps generando una mayor madurez de la misma, con el foco puesto en la robustez de la solución y en la mejora continua.

¿Me puedes contar donde podemos poner esto?

Algunos ejemplos típicos del uso de Azure Chaos Studio serían… básicamente cualquiera en la que queramos probar la infraestructura o aplicaciones, pero entre ella… podemos por ejemplo… Cortar la conexión a un recurso de almacenamiento para ver como se comporta la app, si usa correctamente el failback, la caché o cualquier cosa que hayamos configurado. Podemos simular la sobrecarga de la CPU o de la memoria en una máquina virtual para ver cómo se comporta y si escala de manera automática. Podemos reiniciar de manera aleatoria las instancias de una aplicación web para ver si el balanceador de carga hace bien su papel y redirige correctamente. También podemos inyectar latencia en la red entre microservicios para comprobar cómo se comportan los sistemas ante las lentitudes o los timeouts. Otro caso de uso podría ser un simulacro de fallo de zona, para probar qué pasa si una región de Azure deja de estar disponible y si se evacua hacia otra de manera correcta.

Vale, esto mola mucho y ¿Por dónde empiezo?

Como siempre, Microsoft nos permite probar su solución, y en este caso, Azure Chaos Studio nos permite probarlo siguiente los siguientes pasos:

Para comenzar, como siempre, deberíamos leer la documentación de Learn (https://learn.microsoft.com/es-es/azure/chaos-studio/).

Obtener una suscripción de Azure activa y acceder al portal de Azure y buscar «Chaos Studio». Tras esto se deben habilitar los recursos que se quieren incluir en los experimentos. Esto se debe hacer de forma explícita, de esta manera se evita que haya problemas en partes que no tengamos controladas. Por último, se deberá crear un nuevo experimento, definir las acciones a realizar y lanzar.

NOTA: Recuerda que también puedes definir toda la infraestructura y todas las pruebas como código usando las plantillas de ARM o Bicep, automatizarlo con Azure CLI, PowerShell, etc.

¿Tenemos opciones de integración con otras herramientas de Azure?

Una de las cosas que más molan de Azure Chaos Studio es que se integra con lo que ya usamos en los entornos típicos de Azure, como por ejemplo Azure Monitor y Application Insights, Azure DevOps o GitHub Actions, Azure Policy y Defender for Cloud. Que, aunque ya deberías conocerlas vamos a recordar brevemente para que sirve cada una de ellas.

  • Azure Monitor y Application Insights nos servirá para ver el impacto de los problemas que tengamos en tiempo real.
  • Azure DevOps o GitHub Actions nos permite desplegar distintas pruebas de resiliencia como parte de uno de nuestros pipelines.
  • Azure Policy y Defender for Cloud nos servirán para asegurar que los entornos cumplen con los requisitos de pruebas de resiliencia que harán que nuestras app sean infalibles.

Y en conclusión…

La herramienta Azure Chaos Studio puede parecernos algo radical en un principio, pero aporta muchísimo valor a aquellos equipos que buscan construir sistemas y aplicaciones fiables y listos para el mundo real, lo que ahora se llama resilientes, la palabra de moda.

Este entorno no está diseñado para romper por romper o a lo loco, sino que trata de romper los sistemas con cierta inteligencia, con el propósito de ver donde fallan, donde tenemos que mejorar, etc.

Si trabajas con Azure y necesitas que tus aplicaciones y sistemas sean realmente capaces de resistirlo todo… no lo dudes, dale una oportunidad a esta herramienta: Chaos Studio es tu mejor aliado.

Bueno, seguiremos en otros artículos.

Gracias por habernos leído.

Un abrazo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Related Post