« À l’ère du Big Data, les insights collectés par les services cloud s’exécutant à l’échelle d’Azure dépassent rapidement la capacité d’attention des humains. Il est essentiel d’identifier les mesures adéquates pour maintenir la qualité de service la plus élevée possible compte tenu du volume important de données collectées. En appliquant cette vision à Azure, nous envisageons d’intégrer l’IA dans notre plateforme cloud et notre processus DevOps (qui porterait le nom d’AIOps), pour que la plateforme Azure devienne plus auto-adaptive, résiliente et efficace. AIOps aidera également nos ingénieurs à prendre les bonnes mesures de manière plus efficace et plus rapide afin de continuer à améliorer la qualité du service et à satisfaire nos clients et partenaires. Ce billet s’inscrit dans notre série Advancing Reliability qui met en évidence les initiatives entreprises pour améliorer la fiabilité de la plateforme Azure. Le billet qui suit a été rédigé par Jian Zhang, notre gestionnaire de programme qui supervise ces efforts, car elle partage notre vision de l’AIOps. Il met en évidence les domaines dans lesquels l’IA a déjà été intégrée dans le cadre de notre gestion de services cloud de bout en bout. » — Mark Russinovich, directeur technique, Azure
Ce billet inclut des contributions de Yingnong Dang, Principal Data Scientist Manager et de Murali Chintalapati,Partner Group Software Engineering Manager.
Comme Mark l’a mentionné lorsqu’il a lancé cette série de blogs Advancing Reliability, la construction et l’exploitation d’une infrastructure cloud mondiale à l’échelle d’Azure est une tâche complexe avec des centaines de composants de service en évolution permanente, couvrant plus de 160 centres de données sur plus de 60 régions. Pour relever ce défi, nous avons créé une équipe AIOps pour collaborer largement avec les équipes d’ingénieurs Azure et nous nous sommes associés à Microsoft Research pour développer des solutions d’IA afin que la gestion des services cloud soit plus efficace et plus fiable que jamais. Nous allons partager notre vision sur l’importance d’intégrer l’IA dans notre processus DevOps et notre plateforme cloud. C’est Gartner qui a lancé un terme se rapprochant d’AIOps (prononcé « AI OPS »), et c’est depuis celui que nous utilisons couramment en interne, même si sa portée est plus large. Le post d’aujourd’hui n’est qu’un début, car nous avons l’intention de publier des mises à jour régulières pour partager nos expériences d’adoption et nos exemples d’utilisation des technologies d’IA pour l’utilisation et le déploiement d’Azure à grande échelle.
Pourquoi AIOps ?
Les services cloud présentent deux caractéristiques uniques :
- L’évolutivité et la complexité sans cesse croissantes de la plateforme et des systèmes cloud
- Les besoins en perpétuelle évolution des clients, des partenaires et de leurs charges de travail
Pour créer et utiliser des services cloud fiables en ces temps de changement constant, et le faire le plus efficacement possible, nos ingénieurs cloud (notamment des milliers de gestionnaires de programme, d’ingénieurs du support technique, d’ingénieurs des opérations et de développeurs Azure) se fient énormément sur les données pour prendre des décisions et entreprendre des actions. En outre, bon nombre de ces décisions et actions doivent être exécutées automatiquement en tant que partie intégrante de nos services cloud ou de nos processus DevOps. La rationalisation du chemin séparant les données d’une part, et les décisions et actions d’autre part, implique l’identification de modèles dans les données, le raisonnement et l’élaboration de prédictions basées sur des données historiques, puis la recommandation ou même la prise d’actions sur la base des insights issus de toutes ces données sous-jacentes.
Figure 1. Intégrer l’IA dans la plateforme cloud et DevOps.
La vision AIOps
L’AIOps a commencé à transformer le secteur du cloud en améliorant la qualité du service et l’expérience client à grande échelle, tout en augmentant la productivité des ingénieurs avec des outils intelligents, en favorisant l’optimisation continue des coûts et, enfin, en améliorant la fiabilité, les performances et l’efficacité de la plateforme proprement dite. Lorsque nous investissons dans le développement d’AIOps et des technologies associées, nous constatons au final que nous générons une plus-value de plusieurs façons :
- Qualité de service et efficacité accrues : Les services cloud intégreront des fonctionnalités de surveillance automatique, d’auto-adaptation et de réparation spontanée, le tout avec une intervention humaine minime. L’automatisation au niveau de la plateforme, alimentée par cette intelligence, améliorera la qualité du service (y compris la fiabilité, la disponibilité et les performances) et son efficacité pour offrir la meilleure expérience possible au client.
- Productivité DevOps supérieure : Grâce à la puissance d’automatisation de l’IA et du ML, les ingénieurs ne sont plus obligés d’enquêter sur les problèmes répétés, de faire fonctionner manuellement leurs services et d’assurer leur prise en charge. Ils peuvent se concentrer sur la résolution de nouveaux problèmes, la création de nouvelles fonctionnalités et sur le travail qui a un impact plus direct sur l’expérience des clients et des partenaires. En pratique, l’AIOps fournit aux développeurs et aux ingénieurs des insights leur permettant d’éviter d’examiner les données brutes, ce qui améliore leur productivité.
- Satisfaction des clients améliorée : Les solutions AIOps jouent un rôle essentiel, car elles permettent aux clients d’utiliser leurs charges de travail, de les gérer et de résoudre les problèmes associés en plus de nos services cloud, et ce, le plus aisément possible. Nous nous efforçons d’utiliser l’AIOps pour mieux comprendre les besoins des clients, dans certains cas pour identifier les problèmes potentiels et y répondre de manière proactive si nécessaire. Les insights basés sur les données concernant le comportement des clients en matière de charge de travail pourraient indiquer quand Microsoft ou le client doit intervenir pour éviter des problèmes ou appliquer des solutions de contournement. Finalement, l’objectif est d’améliorer la satisfaction en identifiant, atténuant et corrigeant rapidement les problèmes.
Mes collègues Marcus Fontoura, Murali Chintalapati et Yingnong Dang ont partagé la vision, les investissements et les exemples de réalisations de Microsoft dans ce domaine lors du discours d’ouverture AI for Cloud–Toward Intelligent Cloud Platforms and AIOps à l’occasion de l’atelier AAAI-20 Workshop on Cloud Intelligence dans le cadre de la 34e conférence de l’AAAI sur l’intelligence artificielle. La vision a été créée par un Comité AIOps de Microsoft parmi les groupes de produits de service cloud, notamment Azure, Microsoft 365, Bing et LinkedIn, ainsi que Microsoft Research (MSR). Dans le discours d’ouverture, nous avons partagé quelques domaines clés dans lesquels l’AIOps peut contribuer à transformer la création et l’exploitation des systèmes cloud, comme indiqué dans le graphique ci-dessous.
Figure 2. IA pour le cloud : AIOps et plateforme de service d’IA.
AIOps
Au-delà de notre vision, nous souhaitions commencer par résumer brièvement notre méthodologie générale pour créer des solutions AIOps. Dans ce domaine, le début de la solution réside toujours dans les données (mesures de systèmes, de clients et de processus), car la clé de toute solution AIOps consiste à distiller des insights sur le comportement du système, les comportements des clients, et les artefacts et processus DevOps. Ces insights peuvent inclure l’identification d’un problème qui se produit maintenant (détecter), la raison pour laquelle il se produit (diagnostiquer), ce qui se produira à l’avenir (prédire) et comment améliorer (optimiser, ajuster et atténuer). Ces informations doivent toujours être associées à des métriques métier (satisfaction des clients, qualité du système et productivité DevOps) et entraîner des actions conformes aux priorités déterminées par l’impact sur l’activité. Les actions seront également réintégrées dans le système et le processus. Ces commentaires peuvent être entièrement automatisés (intégrés dans le système) ou intégrer une participation humaine (intégrés dans le processus DevOps). En suivant cette méthodologie globale, nous avons créé des solutions AIOps s’articulant autour de trois piliers.
Figure 3. Méthodologies AIOps : Données, insights et actions.
IA pour les systèmes
Aujourd’hui, nous introduisons plusieurs solutions AIOps qui sont déjà utilisées et prennent en charge Azure en arrière-plan. L’objectif est d’automatiser la gestion du système afin de diminuer l’intervention humaine, et donc de réduire les coûts opérationnels, d’améliorer l’efficacité du système et d’augmenter la satisfaction des clients. Ces solutions ont déjà largement contribué à améliorer la disponibilité de la plateforme Azure, en particulier pour les machines virtuelles IaaS Azure. Les solutions AIOps ont apporté leur contribution de plusieurs manières, notamment en protégeant la charge de travail des clients contre les défaillances des hôtes grâce à la prédiction des défaillances matérielles et à des actions proactives telles que la migration à chaud, Project Tardigrade et le pré-approvisionnement des machines virtuelles pour réduire le temps nécessaire à leur création.
Il va de soi que les améliorations techniques et l’innovation permanente des systèmes jouent aussi un rôle important dans l’amélioration continue de la fiabilité de la plateforme.
- La prédiction des défaillances matérielles consiste à protéger les clients cloud contre les interruptions causées par des défaillances matérielles. Nous avons partagé notre expérience (Improving Azure Virtual Machine resiliency with predictive ML and live migration) en 2018. Microsoft Research et Azure ont mis au point une solution de prédiction des défaillances de disque pour Azure Compute, qui déclenche la migration à chaud des machines virtuelles des clients, des nœuds proches de la défaillance vers des nœuds sains. Nous avons également étendu la prédiction à d’autres types de problèmes matériels, notamment les défaillances de mémoire et de routeur réseau. Cela nous permet d’effectuer une maintenance prédictive pour améliorer la disponibilité.
- En créant des machines virtuelles pré-approvisionnées, le service de pré-approvisionnement d’Azure offre des avantages en matière de fiabilité et de latence lors du déploiement des machines virtuelles. Les machines virtuelles pré-approvisionnées sont des machines virtuelles qui ont été pré-créées et partiellement configurées avant même que les clients le demandent. Comme nous l’avons décrit dans le discours d’ouverture de l’AAAI-20 mentionné ci-dessus, le service de pré-approvisionnement utilise un moteur de prédiction pour prédire les configurations de machine virtuelle ainsi que le nombre de machines virtuelles par configuration à créer au préalable. Ce moteur de prédiction applique des modèles dynamiques qui sont formés sur la base de comportements de déploiement anciens et actuels et prédit des déploiements futurs. Le service de pré-approvisionnement utilise cette prédiction pour créer et gérer des pools de machines virtuelles par configuration de machine virtuelle. Le service de pré-approvisionnement redimensionne le pool de machines virtuelles en détruisant ou en ajoutant des machines virtuelles conformément aux prédictions les plus récentes. Une fois qu’une machine virtuelle correspondant à la demande du client est identifiée, elle est affectée à partir du pool pré-créé à l’abonnement du client.
l’IA pour DevOps
L’intelligence artificielle peut accroître la productivité des ingénieurs et permettre d’expédier rapidement des services de haute qualité. Voici quelques exemples d’IA pour les solutions DevOps.
- La gestion des incidents est un aspect important de la gestion des services cloud : elle consiste à identifier et à atténuer des interruptions rares, mais inévitables, de la plateforme. Une procédure classique de gestion des incidents comprend plusieurs étapes, notamment la détection, l’engagement et l’atténuation. Le temps passé pour chaque phase est utilisé comme indicateur de performance clé (KPI) afin de mesurer et d’accélérer la résolution des problèmes. Les indicateurs de performances clés incluent le temps de détection (TTD, Time to Detect), le temps d’engagement (TTE, Time to Engage) et le temps d’atténuation (TTM, Time to Mitigate).
Figure 4. Procédures de gestion des incidents.
Comme indiqué dans l’article AIOps Innovations in Incident Management for Cloud Services dans le cadre de la Conférence AAAI-20, nous avons développé des solutions basées sur l’IA qui permettent aux ingénieurs non seulement de détecter les problèmes à un stade précoce, mais aussi d’identifier la ou les équipes appropriées à déployer et, par conséquent, de procéder à une atténuation aussi rapide que possible. L’intégration étroite à la plateforme permet une atténuation sans contact de bout en bout pour certains scénarios, ce qui réduit considérablement l’impact sur le client et améliore par conséquent l’expérience globale du client.
- La détection d’anomalies fournit une solution de surveillance et de détection des anomalies de bout en bout pour Azure IaaS. La solution de détection cible un large éventail de modèles d’anomalies qui inclut non seulement des modèles génériques définis par des seuils, mais aussi des modèles qui sont généralement plus difficiles à détecter, tels que les modèles de fuites (par exemple, les fuites de mémoire) et les modèles émergents (pas un pic, mais une tendance à la hausse avec des fluctuations sur un plus long terme). Les insights générés par les solutions de détection des anomalies sont intégrés dans la plateforme et les processus Azure DevOps existants, par exemple, une alerte via la plateforme de télémétrie, la plateforme de gestion des incidents et, dans certains cas, le déclenchement de communications automatisées envoyées aux clients concernés. Cela nous aide à détecter les problèmes le plus tôt possible.
En guise d’exemple de fonctionnalité orientée client, Seuil dynamique est un modèle de détection d’anomalies basé sur le ML. Cette fonctionnalité d’Azure Monitor est utilisée via le Portail Azure ou via l’API ARM. Le seuil dynamique permet aux utilisateurs de régler leur sensibilité de détection, notamment en spécifiant le nombre de points de violation qui déclenchera une alerte de surveillance.
- Le déploiement sécurisé fait office de « chien de garde » global intelligent pour le lancement sécurisé des composants d’infrastructure Azure. Nous avons créé un système (nom de code Gandalf) qui analyse la corrélation temporelle et spatiale afin de capturer les problèmes latents qui se sont produits des heures, voire des jours après le lancement. Cela permet d’identifier les lancements suspects (au cours d’une série de lancements en cours), un phénomène courant pour les scénarios Azure, et d’éviter la propagation du problème et, par conséquent, l’impact sur d’autres clients. Nous avons fourni des informations détaillées sur nos pratiques de déploiement sécurisé dans ce billet de blog précédent et avons expliqué plus en détail le fonctionnement de Gandalf dans notre publication USENIX NSDI 2020 et notre jeu de diapositives.
L’IA pour les clients
Pour améliorer l’expérience du client Azure, nous développons des solutions d’IA pour alimenter le cycle de vie complet de la gestion des clients. Par exemple, un système d’aide à la décision a été développé pour aider les clients à sélectionner la meilleure ressource de support en se basant sur la sélection du service du client et le résumé textuel du problème rencontré. Cela permet de raccourcir le temps nécessaire pour offrir aux clients et aux partenaires l’aide et le support dont ils ont besoin.
Plateforme de service d’IA
Afin d’accroître l’efficacité de la gestion d’un cloud à l’échelle mondiale, nous avons investi dans la création de systèmes prenant en charge l’utilisation de l’IA pour optimiser l’utilisation des ressources cloud et, par conséquent, l’expérience client. Par exemple, Resource central (RC), une plateforme de service d’IA pour Azure que nous avons décrite dans Communications of the ACM. Elle collecte les données de télémétrie des conteneurs et serveurs Azure, tire des enseignements de leurs comportements antérieurs et, sur demande, produit des prédictions de leurs comportements futurs. Nous utilisons déjà RC pour prédire avec précision de nombreuses caractéristiques des charges de travail Azure Compute, notamment l’approvisionnement et l’allocation des ressources, ce qui contribue à améliorer les performances et l’efficacité du système.
Regard sur l’avenir
Nous avons partagé notre vision de l’intégration de l’IA dans la plateforme Azure et nos processus DevOps et avons mis en évidence plusieurs solutions déjà utilisées pour améliorer la qualité de service dans un large éventail de domaines. Nous envisageons à l’avenir de partager d’autres informations détaillées sur nos solutions internes d’IA et de ML pour une gestion du cloud encore plus intelligente. Nous sommes convaincus que ce sont là des choix d’investissement judicieux qui nous permettront d’être plus efficace et efficient en tant que fournisseur cloud, notamment en améliorant la fiabilité et les performances de la plateforme Azure proprement dite.