Mejora de la calidad de los servicios de Azure con inteligencia artificial: AIOps

Publicado el 29 junio, 2020

Chief Technology Officer, Microsoft Azure

“En la era de los macrodatos, la información recopilada de los servicios en la nube que se ejecutan a la escala de Azure supera rápidamente la capacidad de atención del ser humano. Es fundamental identificar los pasos adecuados para mantener la máxima calidad posible de los servicios en función del gran volumen de datos recopilados. Al aplicar esto a Azure, pensamos en la incorporación de inteligencia artificial a nuestra plataforma en la nube y a nuestro proceso de DevOps (lo que pasa a denominarse AIOps) para lograr que la plataforma Azure sea más adaptable, resistente y eficaz. AIOps también ayudará a nuestros ingenieros a tomar las medidas adecuadas de una forma más eficaz y oportuna para seguir mejorando la calidad de los servicios y deleitando a nuestros clientes y asociados. Esta entrada de blog es la continuación de nuestra serie sobre la mejora de la confiabilidad, donde se ponen de manifiesto las iniciativas que estamos llevando a cabo para seguir mejorando la confiabilidad de la plataforma Azure. La entrada de blog que viene a continuación la ha escrito Jian Zhang, nuestra administradora de programas encargada de supervisar estos trabajos. Jian comparte nuestra visión de AIOps y destaca las áreas donde esta incorporación de inteligencia artificial ya es una realidad dentro de nuestra labor integral de administración de servicios en la nube”. —Mark Russinovich, director de tecnología, Azure


Esta entrada incluye aportaciones del director principal de ciencia de datos, Yingnong Dang, y del director de ingeniería de software del grupo de asociados, Murali Chintalapati.

 

Como ya mencionó Mark cuando inició esta serie de entradas de blog sobre la mejora de la confiabilidad, la creación y la administración de una infraestructura en la nube global a la escala de Azure es una tarea compleja, con cientos de componentes de los servicios en constante evolución que abarcan más de 160 centros de datos en más de 60 regiones. Para afrontar este reto, hemos creado un equipo de AIOps que colabora ampliamente con los equipos de ingeniería de Azure y con Microsoft Research para desarrollar soluciones de inteligencia artificial que hagan que la administración de servicios en la nube sea más eficaz y más confiable que nunca. Vamos a exponer nuestra visión de la importancia de incorporar inteligencia artificial a nuestra plataforma en la nube y del proceso de DevOps. Gartner denominó AIOps (pronunciado /eɪ aɪ ɒps/) a algo parecido y se ha convertido en el término habitual que usamos internamente, aunque con un significado más amplio. La entrada de hoy es solo el principio, ya que tenemos previsto ofrecer actualizaciones periódicas para compartir nuestros casos de adopción del uso de tecnologías de inteligencia artificial para sustentar la creación y la administración de Azure a gran escala.

¿Por qué AIOps?

Los servicios en la nube tienen dos características únicas:

  • El aumento constante de la escala y la complejidad de la plataforma en la nube y los sistemas.
  • Las necesidades cambiantes de los clientes, los asociados y sus cargas de trabajo.

Para crear y operar servicios en la nube confiables durante este estado constante de flujo y hacerlo de la manera más eficaz y eficiente posible, nuestros ingenieros de la nube (incluidos miles de desarrolladores de Azure, ingenieros de operaciones, ingenieros de asistencia al cliente y administradores de programas) confían en gran medida en los datos para tomar decisiones y medidas. Además, muchas de estas decisiones y acciones deben ejecutarse automáticamente como parte integral de nuestros servicios en la nube o de nuestros procesos de DevOps. La optimización del proceso que tiene lugar desde los datos hasta la toma de decisiones y la implementación de medidas implica la identificación de patrones en los datos, el razonamiento y la realización de predicciones basadas en datos históricos y, por último, la recomendación (o incluso la implementación) de medidas basadas en la información obtenida de todos los datos subyacentes.

 Incorporación de inteligencia artificial a la plataforma en la nube y los procesos de DevOps, con la inteligencia artificial en el centro de los clientes, la ingeniería y los servicios.
Figura 1. Incorporación de inteligencia artificial a la plataforma en la nube y los procesos de DevOps.

La visión de AIOps

AIOps ha comenzado a transformar el negocio de la nube, porque mejora la calidad de los servicios y la experiencia del cliente a gran escala, al tiempo que impulsa la productividad de los ingenieros con herramientas inteligentes, hace posible al optimización continua de los costos y, en última instancia, mejora la confiabilidad, el rendimiento y la eficacia de la plataforma en sí. Cuando invertimos en avances de AIOps y en tecnologías relacionadas, vemos que, en última instancia, esto aporta valor de varias maneras:

  • Mayor calidad y eficiencia del servicio. Los servicios en la nube tendrán funcionalidad integrada de supervisión, adaptación y recuperación automáticas, todo ello con una mínima intervención humana. La automatización a nivel de plataforma basada en esta inteligencia mejorará la calidad de los servicios (incluidos el rendimiento, la confiabilidad y la disponibilidad) y su eficacia para ofrecer la mejor experiencia del cliente posible.
  • Mayor productividad de DevOps. Con la capacidad de automatización que aportan la inteligencia artificial y el aprendizaje automático, los ingenieros se liberan de la ardua tarea de investigar los problemas que se repiten, operar los servicios manualmente y ofrecer soporte técnico. En su lugar, pueden centrarse en resolver problemas nuevos, crear funcionalidad nueva y trabajar en lo que influye más directamente en la experiencia del cliente y de los asociados. En la práctica, AIOps aporta a los desarrolladores e ingenieros información que les evita tener que analizar datos sin procesar, lo que mejora la productividad de los ingenieros.
  • Mayor satisfacción de los clientes: Las soluciones de AIOps desempeñan un papel fundamental a la hora de permitir que los clientes usen y mantengan sus cargas de trabajo en nuestros servicios en la nube (y solucionen los problemas relacionados) de la forma más sencilla posible. Procuramos utilizar AIOps para comprender mejor las necesidades de los clientes; en algunos casos, para identificar posibles deficiencias e informar sobre ellas de forma proactiva según sea necesario. La información sobre el comportamiento de las cargas de trabajo de los clientes basada en los datos puede indicar cuándo es necesario que Microsoft o el cliente tomen medidas para evitar problemas o aplicar soluciones alternativas. En última instancia, el objetivo es mejorar la satisfacción identificando, mitigando y corrigiendo los problemas rápidamente.

Mis compañeros Marcus Fontoura, Murali Chintalapati y Yingnong Dang expusieron la visión, la inversión y los logros de ejemplo de Microsoft en este campo durante la ponencia de presentación IA para la nube: hacia plataformas en la nube inteligentes y AIOps en el evento AAAI-20 Workshop on Cloud Intelligence junto con 34th AAAI Conference on Artificial Intelligence. La visión fue creada por un comité de AIOps de Microsoft que abarcaba grupos de productos de servicios en la nube, como Azure, Microsoft 365, Bing y LinkedIn, así como Microsoft Research (MSR). En la ponencia de presentación, compartimos varias áreas clave en las que AIOps puede ser un elemento transformador para crear y operar sistemas en la nube, como se muestra en el siguiente gráfico.
 

IA para la nube: IAOps y plataforma de servicios de IA que muestra casos de uso de ejemplo de IA para sistemas, IA para DevOps e IA para clientes.


Figura 2. IA para la nube: AIOps y plataforma de servicios de inteligencia artificial.

AIOps

Yendo más allá de nuestra visión, queríamos empezar con un breve resumen de nuestra metodología general para la creación de soluciones de AIOps. Una solución en este campo siempre comienza con datos (medidas de los sistemas, los clientes y los procesos), ya que la clave de cualquier solución de AIOps es la obtención de información sobre el comportamiento de los sistemas y los clientes, y los artefactos y procesos de DevOps. La información puede incluir la identificación de un problema que está ocurriendo en este momento (detección), por qué está ocurriendo (diagnóstico), lo que ocurrirá en el futuro (predicción) y cómo mejorar (optimización, ajuste y mitigación). Esta información debe asociarse siempre a métricas empresariales (satisfacción del cliente, calidad del sistema y productividad de DevOps) e impulsar medidas en línea con la priorización determinada por el impacto empresarial. Esas medidas se incorporarán también al sistema y el proceso. Esta incorporación de medidas se puede automatizar por completo (integrada en el sistema), o bien la pueden llevar a cabo personas (integrada en el proceso de DevOps). Esta metodología general nos ha guiado para crear soluciones de AIOps en tres pilares.

Metodologías de AIOps: datos (cliente, sistema, DevOps), información (detección, diagnóstico, predicción, optimización) y medidas (mitigación, prevención de problemas futuros, optimización de la configuración del uso, mejora de la arquitectura y el proceso).
Figura 3. Metodologías de AIOps: datos, información y medidas.

Inteligencia artificial para sistemas

Hoy presentamos varias soluciones de AIOps que ya están en uso y que sustentan Azure en segundo plano. El objetivo es automatizar la administración del sistema para reducir la intervención humana. Por tanto, esto ayuda a reducir los costos operativos, mejorar la eficacia del sistema y aumentar la satisfacción del cliente. Estas soluciones ya han contribuido considerablemente a mejorar la disponibilidad de la plataforma Azure, especialmente para las máquinas virtuales (VM) de IaaS de Azure. Las soluciones de AIOps han contribuido de varias maneras, como la protección de las cargas de trabajo de los clientes frente a errores del host mediante la predicción de errores de hardware y medidas proactivas, como la migración en vivo y Project Tardigrade, y el aprovisionamiento previo de máquinas virtuales para reducir el tiempo de creación de las máquinas.

Por supuesto, las mejoras en ingeniería y la innovación continua del sistema también desempeñan un papel importante en la mejora continua de la confiabilidad de la plataforma.

  • La predicción de errores de hardware tiene como objetivo proteger a los clientes de la nube de interrupciones causadas por errores de hardware. En 2018, compartimos nuestro caso de sobre la mejora de la resistencia de las máquinas virtuales de Azure con aprendizaje automático predictivo y la migración en vivo. Los equipos de Microsoft Research y Azure han creado una solución de predicción de errores de disco para Azure Compute que desencadena la migración en vivo de las máquinas virtuales de los clientes de nodos con una predicción de error a nodos con un estado correcto. También hemos ampliado la predicción a otros tipos de problemas de hardware, como los errores memoria y de enrutadores de red. Esto nos permite realizar un mantenimiento predictivo para mejorar la disponibilidad.
  • El servicio de aprovisionamiento previo de Azure aporta ventajas de confiabilidad y latencia a la implementación de máquinas virtuales con la creación de máquinas virtuales aprovisionadas previamente. Las máquinas virtuales aprovisionadas previamente son máquinas virtuales que se crean y se configuran parcialmente antes de que los clientes las soliciten. Como explicamos en la ponencia de presentación de AAAI-20 mencionada anteriormente, el servicio de aprovisionamiento previo aprovecha un motor de predicción para predecir las configuraciones de máquina virtual y el número de máquinas virtuales por configuración que deben crearse con antelación. Este motor de predicción aplica modelos dinámicos entrenados teniendo en cuenta comportamientos de implementaciones históricos y actuales, y predice implementaciones futuras. El servicio de aprovisionamiento previo usa esta predicción para crear y administrar grupos de máquinas virtuales por configuración de máquina virtual. El servicio de aprovisionamiento previo cambia el tamaño del grupo de máquinas virtuales destruyendo o agregando máquinas según lo que indiquen las predicciones más recientes. Cuando se identifica una máquina virtual que coincide con la solicitud del cliente, se asigna la máquina virtual del grupo creado previamente a la suscripción del cliente.

Inteligencia artificial para DevOps

La inteligencia artificial puede impulsar la productividad de ingeniería y ayudar a distribuir servicios de alta calidad con rapidez. Los siguientes son algunos ejemplos de soluciones de inteligencia artificial para DevOps.

  • La administración de incidentes es un aspecto importante de la administración de servicios en la nube, ya que permite identificar y mitigar interrupciones poco frecuentes pero inevitables de la plataforma. Un procedimiento de administración de incidentes típico consta de varias fases: detección, interacción y mitigación. El tiempo invertido en cada fase se usa como indicador clave de rendimiento (KPI) para medir y propiciar la resolución rápida de los problemas. Los KPI incluyen el tiempo de detección (TTD), el tiempo de interacción (TTE) y el tiempo de mitigación (TTM).

 Procedimientos de administración de incidentes, que incluyen el tiempo de detección (TTD), el tiempo de interacción (TTE) y el tiempo de mitigación (TTM).
Figura 4. Procedimientos de administración de incidentes.

Como mencionamos en la ponencia sobre innovaciones en AIOps para la administración de incidentes en servicios en la nube en el congreso de AAAI-20, hemos desarrollado soluciones basadas en inteligencia artificial que permiten a los ingenieros no solo detectar los problemas con antelación, sino también identificar los equipos adecuados que deben intervenir y, por tanto, mitigar los problemas lo más rápido posible. La estrecha integración con la plataforma permite una mitigación fluida completa en algunos escenarios, lo que reduce considerablemente el impacto en el cliente y, por tanto, mejora su experiencia global.

  • La detección de anomalías proporciona una solución integral de supervisión y detección de anomalías para IaaS de Azure. La solución de detección va dirigida a una amplia gama de patrones de anomalías que incluye no solo patrones genéricos definidos por umbrales, sino también patrones que suelen ser más difíciles de detectar, como patrones de filtraciones (por ejemplo, fugas de memoria) y patrones emergentes (no como un pico de actividad, pero que aumentan con las fluctuaciones a largo plazo). La información generada por las soluciones de detección de anomalías se inyecta en la plataforma y los procesos de DevOps actuales de Azure; por ejemplo, mediante la generación de alertas a través de la plataforma de telemetría, la plataforma de administración de incidentes y, en algunos casos, desencadenando el envío automático de mensajes a los clientes afectados. Esto nos ayuda a detectar problemas lo antes posible.

Umbral dinámico, que es un modelo de detección de anomalías basado en aprendizaje automático, es un ejemplo de esta funcionalidad que ya está disponible como una característica para los clientes. Se trata de una característica de Azure Monitor que se puede usar desde Azure Portal o a través de la API de ARM. Umbral dinámico permite a los usuarios optimizar la sensibilidad de la detección; por ejemplo, pueden especificar cuántos puntos de infracción desencadenarán una alerta de supervisión.

  • Las prácticas de implementación segura actúan como un “guardián” global inteligente para llevar a cabo una implementación segura de los componentes de la infraestructura de Azure. Creamos un sistema, cuyo nombre en código era Gandalf, que analiza la correlación temporal y espacial para captar problemas latentes que se produjeron horas o incluso días después de la implementación. Esto ayuda a identificar implementaciones sospechosas (durante un mar de implementaciones continuas), algo habitual en los escenarios de Azure, y ayuda a evitar que el problema se propague y afecte a más clientes. En esta entrada de blog anterior proporcionamos información detallada sobre nuestras prácticas de implementación segura y explicamos con más detalle el funcionamiento de Gandalf en el documento USENIX NSDI 2020 y este conjunto de diapositivas.

Inteligencia artificial para clientes

Para mejorar la experiencia de los clientes de Azure, hemos desarrollado soluciones de inteligencia artificial que sustenten el ciclo de vida completo de la administración de clientes. Por ejemplo, hemos desarrollado un sistema de ayuda para la toma de decisiones con el fin de orientar a los clientes sobre cuál es la mejor selección de recursos de soporte técnico, teniendo en cuenta la selección de servicios del cliente y el resumen textual del problema que ha encontrado. Esto ayuda a reducir el tiempo que se tarda en ofrecer a los clientes y asociados las indicaciones y el soporte técnico que necesitan.

Plataforma de servicios de inteligencia artificial

Para lograr una mayor eficacia en la administración de una nube a escala global, hemos invertido en la creación de sistemas que admitan el uso de inteligencia artificial para optimizar el uso de recursos en la nube y, por tanto, la experiencia del cliente. Un ejemplo de esto lo encontramos en Resource Central (RC), una plataforma de servicios de inteligencia artificial para Azure que se describe en Communications of the ACM. Recopila la telemetría de los servidores y contenedores de Azure, aprende de sus comportamientos anteriores y, cuando se solicita, produce predicciones de sus comportamientos futuros. Ya estamos usando RC para predecir con precisión muchas características de las cargas de trabajo de Azure Compute, como la adquisición y asignación de recursos, lo que ayuda a mejorar el rendimiento y la eficacia del sistema.

De cara al futuro

Hemos compartido nuestra visión de incorporación de inteligencia artificial a la plataforma Azure y nuestros procesos de DevOps, y hemos destacado varias soluciones que ya están en uso para mejorar la calidad de los servicios en numerosas áreas. Seguiremos publicando más detalles sobre nuestras soluciones internas de inteligencia artificial y aprendizaje automático para lograr una administración en la nube aún más inteligente. Estamos seguros de que estas son las soluciones de inversión adecuadas para mejorar nuestra eficacia y eficiencia como proveedor de nube, incluida la mejora de la confiabilidad y el rendimiento de la propia plataforma Azure.