“Nuestro objetivo es capacitar a las organizaciones para que ejecuten sus cargas de trabajo de un modo confiable en Azure. Con este principio como guía, invertimos continuamente en el desarrollo de la plataforma Azure para que sea resistente a errores, no solo con el fin de impulsar la productividad empresarial, sino también para ofrecer una experiencia de cliente sin problemas. El mes pasado publiqué una entrada de blog donde comentaba varias iniciativas que están en marcha para seguir mejorando en este campo, como parte de nuestro compromiso de proporcionar un conjunto de servicios en la nube de confianza. Hoy quería ampliar lo dicho sobre Project Tardigrade, una iniciativa de resistencia de la plataforma que mejora la alta disponibilidad de nuestros servicios, incluso en las raras ocasiones en las que se producen errores espontáneos en la plataforma. La entrada que viene a continuación ha sido escrita por Pujitha Desiraju y Anupama Vedapuri, que dirigen estos esfuerzos dentro del equipo que se ocupa de los aspectos básicos de la plataforma de proceso”. Mark Russinovich, director de tecnología, Azure
En esta entrada ha colaborado también Jim Cavalaris, ingeniero principal de software, Azure Compute.
Esta iniciativa, cuyo nombre en clave es Project Tardigrade, se inspira en el tardígrado (tardigrade en inglés), una criatura microscópica de ocho patas, también denominada oso de agua. Prácticamente imposibles de eliminar, los tardígrados pueden exponerse a condiciones extremas y, de algún modo, consiguen abrirse camino para sobrevivir. Esto es exactamente lo que queremos que hagan nuestros servidores cuando hablamos de resistencia, de ahí el nombre Project Tardigrade. De manera similar a la supervivencia de un tardígrado en una amplia gama de condiciones extremas, este proyecto implica la creación de mecanismos de resistencia y recuperación automática en varias capas de la plataforma, que abarcan desde el hardware hasta el software, todo ello con la idea de proteger sus máquinas virtuales (VM) tanto como sea posible.
¿Cómo funciona?
Project Tardigrade es una amplia iniciativa de resistencia de la plataforma que emplea numerosas estrategias de mitigación con el fin de garantizar que las máquinas virtuales no se vean afectadas por ningún comportamiento de host imprevisto. Esto incluye habilitar los componentes para que se recuperen de posibles errores de forma automática y rápida, y así evitar que esos errores afecten a las cargas de trabajo. Incluso en las raras ocasiones en las que se producen errores de host críticos, nuestra prioridad es preservar y proteger las máquinas virtuales de estos eventos espontáneos para que las cargas de trabajo se ejecuten sin problemas.
A continuación se muestra un ejemplo de flujo de trabajo de recuperación para el caso poco común en el que un cliente intenta iniciar una máquina virtual, pero no lo consigue por un error subyacente en el servidor host. Para iniciar correctamente la máquina virtual y evitar de forma proactiva que ese problema pueda afectar a otras máquinas virtuales del servidor, se envía una notificación al servicio de recuperación de Tardigrade, que comienza a ejecutar operaciones de conmutación por error.
En las siguientes fases se describe brevemente el flujo de trabajo de recuperación de Tardigrade:
Fase 1:
Este paso no influye en la ejecución de máquinas virtuales de los clientes. Simplemente recicla todos los servicios que se ejecutan en el host. En el caso excepcional de que el servicio con errores no se reinicie correctamente, se pasa a la fase 2.
Fase 2:
El servicio de diagnóstico se ejecuta en el host para recopilar sistemáticamente todos los registros o volcados de memoria pertinentes, con el fin de asegurar que se pueda diagnosticar minuciosamente el motivo del error de la fase 1. Este completo análisis nos permite “detectar la causa principal” del problema y, por tanto, evitar que se repita en el futuro.
Fase 3:
A un alto nivel, se restablece el estado correcto del sistema operativo con un impacto mínimo para el cliente, con el fin de mitigar el problema del host. Durante esta fase, se guarda el estado de cada máquina virtual en la memoria RAM y, después, se comienza a restablecer el estado correcto del sistema operativo. Mientras el sistema operativo se restablece con rapidez en segundo plano, la ejecución de aplicaciones en todas las máquinas virtuales hospedadas en el servidor se detiene brevemente, ya que la CPU se suspende temporalmente. Esta experiencia es similar a la pérdida momentánea de una conexión de red que se reanuda rápidamente debido a la lógica de reintentos. Una vez que el sistema operativo se ha restablecido correctamente, las máquinas virtuales consumen su estado almacenado y reanudan la actividad normal, con lo que se evita cualquier posible reinicio de las máquinas.
Con estos principios, nos aseguramos de que un error en cualquier componente concreto del host no afecte a todo el sistema, lo que hace que las máquinas virtuales de los clientes sean más inmunes a errores de host imprevistos. Esto también permite una recuperación rápida de algunas de las formas más extremas de errores críticos (como errores a nivel de kernel y problemas de firmware) y, al mismo tiempo, mantener el estado de la máquina virtual que le preocupe.
De cara al futuro
Actualmente usamos el flujo de trabajo de recuperación de Tardigrade que hemos explicado para detectar posibles errores en los host de software de Azure y recuperar el sistema rápidamente. Al mismo tiempo, seguimos innovando sin cesar nuestra capacidad técnica y ampliando la funcionalidad a otros escenarios de error de host que podamos combatir con esta iniciativa de resistencia.
También queremos explorar las últimas innovaciones en aprendizaje automático para aprovechar la capacidad proactiva de Project Tardigrade. Entre otras cosas, tenemos previsto aprovechar el aprendizaje automático para predecir más tipos de errores de host lo antes posible. Por ejemplo, para detectar patrones de uso anómalos de los recursos del host que podrían afectar a sus cargas de trabajo. También aprovecharemos el aprendizaje automático para ayudar a recomendar medidas de reparación adecuadas (por ejemplo, los pasos de recuperación de Tardigrade, una posible migración en vivo, etc.), con lo que se optimizarán las opciones de recuperación para toda la flota.
A medida que los clientes continúan trasladando cargas de trabajo críticas para la empresa a la plataforma en la nube Microsoft Azure, aprendemos y mejoramos constantemente para poder seguir cumpliendo sus expectativas en cuanto a interrupciones por errores imprevistos. La confiabilidad es y sigue siendo un principio básico de nuestro compromiso por ofrecer una nube de confianza, junto con el cumplimiento normativo, la seguridad, la privacidad y la transparencia. En todas estas áreas, sabemos que la confianza de los clientes se gana y debe mantenerse, no solo diciendo lo correcto, sino haciendo lo correcto. La resistencia de la plataforma tal como la practica Project Tardigrade ya refuerza la disponibilidad de las máquinas virtuales, puesto que se ocupa de que los problemas de los hosts subyacentes no afecten a sus máquinas virtuales.
Seguiremos publicando más mejoras de este proyecto y otros similares, porque queremos ser lo más transparentes posible en cuanto a lo que hacemos para mejorar constantemente la confiabilidad de la plataforma con el fin de aumentar la capacidad de su organización.