Recommandations pour l’implémentation de l’automatisation

S’applique à cette recommandation de check-list Well-Architected Framework Operational Excellence :

OE :09 Automatisez toutes les tâches qui ne bénéficient pas de l’insight et de l’adaptabilité de l’intervention humaine, sont hautement procédurales et ont une durée de conservation qui génère un retour sur investissement d’automatisation. Dans la mesure du possible, choisissez un logiciel hors service pour l’automatisation et les implémentations personnalisées. Traitez toutes les automatisations de la même façon que les composants de charge de travail et appliquez les piliers du Framework bien architecte à leur conception et implémentation.

Ce guide décrit les recommandations relatives à l’adoption de l’automatisation dans votre charge de travail. Vous pouvez automatiser les tâches répétitives et sujettes aux erreurs humaines pour aider vos équipes à gagner en efficacité et à respecter les normes. Automatisez les tâches pour simplifier et cohérence votre charge de travail. L’automatisation permet à vos équipes d’exploitation et d’ingénierie d’être plus efficaces, car elle leur donne plus de temps pour travailler sur d’autres améliorations. L’automatisation est un outil puissant dans tous les aspects de la gestion des charges de travail. Implémentez l’automatisation de manière réfléchie pour permettre à votre organisation.

Stratégies de conception

Lorsque vous développez votre charge de travail, recherchez des opportunités pour tirer parti de l’automatisation afin de réduire la charge de gestion et de réduire les erreurs humaines. Évaluez ces opportunités et considérez la valeur qu’elles apportent à votre organisation. Pour optimiser la valeur de votre investissement dans l’automatisation, hiérarchiser les tâches qui sont simples, procédurales et ont une longue durée de conservation. L’application de l’automatisation n’est pas une tactique tout ou rien. Il existe des flux de travail qui peuvent avoir des opérations qui nécessitent une intervention humaine, comme des points de prise de décision. Ces flux de travail peuvent toujours tirer parti de l’automatisation pour effectuer d’autres tâches.

Évaluer les tâches à automatiser

Tenez compte des recommandations suivantes pour vous assurer que vous hiérarchiser les tâches qui bénéficient le plus de l’automatisation :

  • Visez des victoires faciles. Concentrez-vous sur les tâches hautement procédurales et sensibles à l’erreur humaine. Ces tâches sont hautement automatisables. Ils sont clairement définis, ils sont libres de variables qui ajoutent de la complexité et sont effectuées dans le cadre d’opérations normales. À l’inverse, ne hiérarchisez pas les tâches qui nécessitent l’écriture de scripts complexes pour tenir compte des phénomènes variables ou des tâches qui se produisent rarement.

    Par exemple, les tâches hautement automatisables incluent le redémarrage des serveurs, la création de comptes et le transfert de journaux vers un magasin de données. Ces tâches peuvent se produire selon une planification, en réponse à un événement ou à une alerte de surveillance, ou selon les besoins en fonction de facteurs externes.

  • Recherchez des moyens d’autonomiser les opérateurs et de libérer vos PME. Vous pouvez avoir des experts dans votre organisation qui s’appuient sur des escalades qui peuvent être inutiles. Par exemple, vos administrateurs de base de données peuvent régulièrement recevoir des demandes pour créer de nouvelles bases de données lorsque vous intégrez de nouveaux clients à votre solution mutualisée. Si vous créez un portail libre-service pour votre équipe de support technique, vous pouvez les permettre de créer une base de données vide en toute sécurité. Ou en tant qu’étape intermédiaire, vous pouvez automatiser les demandes et les étapes que le PME doit effectuer en créant des scripts à exécuter.

  • Concentrez-vous sur votre retour sur investissement. L’automatisation à valeur élevée nécessite une surcharge de gestion minimale et ajoute un degré d’efficacité démonstrable. Si vous pouvez enregistrer votre équipe d’opérations une heure par jour en automatisant les entrées de base de données, par exemple, vous leur donnez le temps de trouver d’autres domaines d’amélioration.

Zones à implémenter l’automatisation

Adoptez l’automatisation tout au long du cycle de vie de votre charge de travail, du développement à la gestion quotidienne. Utilisez la liste suivante d’exemples pour vous aider à prendre en compte les grands domaines de votre cycle de vie de charge de travail qui peuvent tirer parti de l’automatisation. Vous pouvez automatiser :

  • Définition de pipeline, exécution et gestion : utilisez des outils d’intégration continue et de livraison continue (CI/CD), tels qu’Azure DevOps et d’autres outils DevOps, pour définir automatiquement un pipeline et la façon dont il s’exécute. Ces outils peuvent vous aider à automatiser les tâches CI/CD ou d’autres tâches, telles que la création de rapports.

  • Déploiements : utilisez des outils tels que des modèles Azure Resource Manager, Bicep, Terraform et Ansible pour automatiser vos processus de développement et de mise en production de charge de travail. Déployez et mettez à jour votre infrastructure avec les mêmes plateformes d’automatisation à l’aide d’une approche iaC (infrastructure as code).

  • Test : de nombreux outils sont disponibles pour automatiser vos processus de test. Ces outils peuvent soulager un fardeau important de votre équipe d’assurance qualité et s’assurer que les tests sont standardisés et fiables.

  • Mise à l’échelle : utilisez des fonctionnalités fournies par la plateforme et d’autres outils, comme les outils d’orchestration, pour mettre automatiquement à l’échelle votre infrastructure lorsque la charge augmente ou diminue.

  • Surveillance et alertes : utilisez des outils disponibles dans votre solution de supervision pour inscrire automatiquement des ressources nouvellement déployées et configurer des actions déclenchées par des alertes pour faciliter la correction lorsque des problèmes surviennent.

  • Auto-réparation : utilisez des alertes générées par votre système de surveillance pour automatiser les actions et récupérer des composants ou des travaux défectueux. Pour plus d’informations, consultez Recommandations pour l’auto-guérison et la préservation de soi.

  • Gestion de la configuration : utilisez des outils d’orchestration et de stratégie pour vous assurer que toutes vos ressources exécutent la même configuration et que les exigences de conformité sont appliquées dans votre charge de travail.

  • Autres tâches d’administration : utilisez des scripts pour automatiser des tâches répétitives telles que la mise à jour des enregistrements de base de données ou des enregistrements DNS.

  • Approbations : permettre aux systèmes de prendre automatiquement des décisions d’approbation basées sur des règles prédéfinies afin d’améliorer l’efficacité des flux de travail qui ont des portes d’approbation. Cette méthode encourage l’utilisation de formulaires et de modèles standardisés, ce qui augmente l’efficacité des processus. L’approbation automatique dans des environnements élevés peut être risquée. Concentrez et testez étroitement vos approbations automatisées pour vous assurer que des critères spécifiques sont définis pour accorder l’approbation.

  • Nouvel utilisateur et intégration de nouveaux employés : vous pouvez automatiser de nombreuses tâches associées à l’intégration de nouveaux utilisateurs d’application ou de nouveaux employés, comme les mises à jour de base de données et la création d’informations d’identification.

  • Surveillance et alertes : tirez parti des fonctionnalités d’automatisation que votre plateforme d’observabilité fournit. Inscrivez automatiquement de nouveaux appareils pour surveiller et alerter sur les anomalies.

Choisir un outil d’automatisation approprié

Le développement de votre propre automatisation interne est fastidieux et peut introduire le fardeau de gestion pour votre équipe de développement. Ils doivent maintenir un outil d’automatisation interne comme ils font tout autre logiciel interne. Il est recommandé d’utiliser des outils hors plateau chaque fois qu’ils peuvent répondre à vos besoins. Entre les outils commerciaux, code source ouvert et cloud fournis par la plateforme cloud, il existe de nombreuses options disponibles. Il est probable que vous utiliserez un large éventail d’outils pour créer l’automatisation dont vous avez besoin. Reposez-vous sur votre expertise interne pour vous aider à guider vos décisions lors de l’évaluation des outils. Votre équipe peut être plus familiarisée avec certains langages et infrastructures de développement. Vous pouvez initialement vous concentrer sur les outils hors plateau qu’ils peuvent utiliser sans courbe d’apprentissage élevée. Réfléchissez aux tâches que vous envisagez d’aborder avec l’automatisation et investissez dans les outils qui peuvent spécifiquement traiter ces tâches. Ne procurez pas d’outils que vous préférez généralement, puis prenez en compte les tâches par la suite.

Gardez à l’esprit les facteurs qui peuvent compliquer vos opérations lorsque vous créez votre automatisation, comme le verrouillage de version et le surutilisation du plug-in. Les plug-ins, comme Jenkins ou Azure DevOps, constituent un excellent moyen d’ajouter des fonctionnalités. Vous devez adopter des plug-ins quand il bénéficie de vos objectifs d’automatisation. Toutefois, lorsque vous utilisez plusieurs plug-ins pour effectuer une tâche unique, il peut rendre les mises à jour d’automatisation et la résolution des problèmes difficiles. Soyez judicieux dans votre utilisation de plug-ins. Évitez également les solutions qui ont des dépendances de version de framework, car elles sont un fardeau pour la maintenance au fil du temps. Pour réduire le risque de ces types de problèmes, normaliser votre sélection d’outils d’automatisation et de plug-ins, et utiliser le contrôle de code source pour tous les projets d’automatisation.

Intégrer l’automatisation à votre charge de travail

Pour tous les outils que vous utilisez pour créer votre automatisation, rendez-vous facilement accessible et gérable pour vos opérateurs. Fournissez des interfaces claires et faciles à utiliser pour votre équipe de charge de travail. Vous pouvez fournir l’accès aux pipelines CI/CD, aux API et aux bibliothèques. Comme la charge de travail prise en charge par l’automatisation, vous devez gérer l’automatisation de manière holistique. Sécurisez l’automatisation au même niveau que d’autres composants de charge de travail. Surveillez l’automatisation et faites-la l’objet des mêmes protocoles de test que d’autres composants de charge de travail.

À propos de l’installation

  • Parfois, l’efficacité que vous gagnez de l’automatisation l’emporte sur le fardeau de gestion du développement de votre propre solution si aucune solution hors-service ne répond à vos besoins. Dans ces cas, soyez judicieux dans vos efforts de développement. Concentrez-vous de manière étroite sur le développement uniquement de ce que vous devez couvrir les lacunes que vous ne pouvez pas résoudre avec des solutions prêtes à l’emploi et réduire les complexités telles que les dépendances.

  • L’automatisation complexe nécessitant un niveau élevé de maintenance peut être difficile pour les équipes d’exploitation à gérer et résoudre les problèmes. Gardez les tâches automatisées étroitement axées sur l’exécution de tâches discrètes uniquement. Essayez de réduire les dépendances sur d’autres outils ou composants.

  • Soyez réfléchi à l’utilisation de processus manuels. Si vous décidez de ne pas automatiser une opération, documentez soigneusement le processus manuel en créant une liste de contrôle pas à pas pour les opérateurs. Cette pratique réduit les risques d’erreur humaine, comme un opérateur exécutant par erreur le mauvais processus. Cette documentation vous aide également à concevoir l’automatisation de ce processus à l’avenir.

  • Lorsque vous utilisez une approche manuelle et automatisée hybride, vous devez être particulièrement prudent. Si un script exécute la plupart d’un processus, mais qu’il est ensuite différé à un humain pour une partie ou une décision spécifique, il est important que vous donnez à la personne le contexte nécessaire et les informations nécessaires pour prendre une décision éclairée.

Facilitation Azure

Azure propose de nombreux outils pour vous aider à automatiser les tâches de votre charge de travail.

Outils IaC : vous pouvez utiliser Terraform, Bicep et Azure Resource Manager pour les déploiements IaC. En fonction de vos besoins et de la connaissance des outils de votre équipe, vous pouvez utiliser un ou plusieurs de ces outils pour vos déploiements et la gestion des ressources.

Azure Functions : Azure Functions est un outil serverless que vous pouvez utiliser pour automatiser les tâches à l’aide de votre langage de développement préféré. Functions fournit un ensemble complet de déclencheurs et de liaisons pilotés par les événements qui connectent vos fonctions à d’autres services. Vous n’avez pas besoin d’écrire du code supplémentaire.

GitHub Actions pour Azure : vous pouvez utiliser GitHub Actions pour Azure pour automatiser les processus CI/CD. GitHub Actions s’intègre à Azure pour simplifier les déploiements. Vous pouvez créer des flux de travail qui créent et testent chaque demande de tirage dans votre référentiel ou déploient des demandes de tirage fusionnées en production.

GitHub Actions va au-delà de DevOps et vous permet d’exécuter des flux de travail lorsque d’autres événements se produisent dans votre dépôt. Par exemple, vous pouvez exécuter un flux de travail pour ajouter automatiquement des étiquettes appropriées lorsque quelqu’un crée un problème dans votre référentiel.

Azure Automation : PowerShell et Python sont des langages de programmation populaires pour automatiser les tâches opérationnelles. Utilisez ces langages pour effectuer des opérations telles que le redémarrage des services, le transfert des journaux entre les magasins de données et l’infrastructure de mise à l’échelle pour répondre à la demande. Vous pouvez exprimer ces opérations dans le code et les exécuter à la demande. Seuls, ces langages ne proposent pas de plateforme pour la gestion centralisée, le contrôle de version ou l’historique des exécutions. Les langages ne disposent pas non plus d’un mécanisme natif pour répondre à des événements tels que les alertes pilotées par la surveillance. Pour fournir ces fonctionnalités, vous avez besoin d’une plateforme d’automatisation.

Automation fournit une plateforme hébergée par Azure pour l’hébergement et l’exécution de code PowerShell et Python dans des environnements cloud et locaux, à la fois Azure et non-Azure. Le code PowerShell et Python est stocké dans un runbook Automation. L'automatisation permet les opérations suivantes :

  • Déclenchez des runbooks à la demande, selon une planification ou via un webhook.

  • Historique des exécutions et journalisation.

  • Intégrer un magasin de secrets.

  • Intégrer le contrôle de code source.

Azure Update Manager : Update Manager est un service unifié qui permet de gérer et de régir les mises à jour des machines virtuelles. Vous pouvez surveiller la conformité des mises à jour Windows et Linux dans votre charge de travail. Vous pouvez également utiliser Update Manager pour effectuer des mises à jour en temps réel ou les planifier dans une fenêtre de maintenance définie. Utilisez Update Manager pour :

  • Supervisez la conformité sur l’ensemble de votre flotte de machines.
  • Planifier des mises à jour récurrentes
  • Déployer des mises à jour critiques

Environnements de déploiement Azure : les environnements de déploiement permettent aux équipes de développement de créer rapidement une infrastructure d’application cohérente à l’aide de modèles basés sur des projets. Ces modèles réduisent le temps d’installation et optimisent la sécurité, la conformité et l’efficacité des coûts. Un environnement de déploiement est une collection de ressources Azure déployées dans des abonnements prédéfinis. Les administrateurs d’infrastructure de développement peuvent appliquer des stratégies de sécurité d’entreprise et fournir un ensemble organisé de modèles IaC prédéfinis.

Les administrateurs d’infrastructure de développement définissent des environnements de déploiement en tant qu’éléments de catalogue. Les éléments de catalogue sont hébergés dans un référentiel GitHub ou Azure DevOps, appelé catalogue. Un élément de catalogue se compose d’un modèle IaC et d’un fichier manifest.yaml.

Vous pouvez scripter la création d’environnements de déploiement et gérer par programme les environnements.

Azure Logic Apps et Microsoft Power Automate : lorsque vous créez une automatisation de processus numérique personnalisée (DPA) pour gérer les tâches de charge de travail telles que les flux d’approbation ou la création d’intégrations ChatOps, envisagez d’utiliser Logic Apps ou Power Automate. Vous pouvez construire des flux de travail à partir de connecteurs et de modèles intégrés. Logic Apps et Power Automate reposent sur la même technologie sous-jacente et conviennent parfaitement aux tâches basées sur des déclencheurs ou temporelles.

Mise à l’échelle automatique : de nombreuses technologies Azure ont des fonctionnalités de mise à l’échelle automatique intégrées. Vous pouvez également programmer d’autres services pour effectuer une mise à l’échelle automatique à l’aide d’API. Pour plus d’informations, consultez Recommandations pour la conception d’une stratégie de mise à l’échelle fiable.

Groupes d’actions Azure Monitor : pour exécuter automatiquement des opérations de réparation automatique lorsqu’une alerte est déclenchée, utilisez des groupes d’actions Azure Monitor. Vous pouvez définir ces opérations à l’aide d’un runbook, d’une fonction Azure ou d’un webhook.

Exemple

Pour obtenir un exemple d’utilisation d’Automation en tandem avec d’autres services Azure, consultez l’automatisation des opérations à l’aide d’Azure Event Grid. Cet exemple utilise Logic Apps et Event Grid pour automatiser les tâches opérationnelles.

Liste de contrôle d’excellence opérationnelle

Reportez-vous à l’ensemble complet de recommandations.