Recommandations pour l’implémentation de l’automatisation

S’applique à cette recommandation de liste de contrôle d’excellence opérationnelle Well-Architected Framework :

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 vie qui génère un retour sur investissement dans l’automatisation. Dans la mesure du possible, choisissez un logiciel prêt à l’emploi pour l’automatisation plutôt que des 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 Well-Architected Framework à leur conception et à leur 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 rendre votre charge de travail cohérente. 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 renforcer votre organization.

Stratégies de conception

À mesure que vous développez votre charge de travail, recherchez les opportunités de 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 tenez compte de la valeur qu’elles apportent à votre organization. Pour optimiser la valeur de votre investissement dans l’automatisation, hiérarchisez les tâches simples, procédurales et dont la durée de conservation est longue. L’application de l’automatisation n’est pas une tactique de 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.

Tâches cibles à automatiser

Tenez compte des recommandations suivantes pour vous assurer de 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 susceptibles d’être erronées. Ces tâches sont hautement automatisables. Elles sont clairement définies, elles sont exemptes de variables qui ajoutent de la complexité, et elles sont effectuées dans le cadre d’opérations normales. À l’inverse, ne donnez pas la priorité à l’automatisation des tâches qui nécessitent l’écriture de scripts complexes pour prendre en compte les phénomènes variables ou les tâches qui se produisent rarement.

    Des exemples de tâches hautement automatisables incluent le redémarrage de 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 organization sur lesquels on s’appuie pour les escalades qui peuvent être inutiles. Par exemple, vos administrateurs de base de données peuvent régulièrement recevoir des demandes de création de bases de données lorsque vous intégrez de nouveaux clients à votre solution multilocataire. Si vous créez un portail libre-service pour votre équipe de support technique, vous pouvez lui 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 à effectuer par la PME 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émontrable. Si vous pouvez économiser une heure par jour à votre équipe des opérations en automatisant les entrées de base de données, par exemple, vous lui donnez le temps de trouver d’autres domaines à améliorer.

Domaines d’implémentation de 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 d’exemples suivante pour vous aider à prendre en compte les grands domaines du cycle de vie de votre charge de travail qui peuvent tirer parti de l’automatisation. Vous pouvez automatiser :

  • Définition, exécution et gestion du pipeline : utilisez des outils d’intégration continue et de livraison continue (CI/CD), comme Azure DevOps et d’autres outils DevOps, pour définir automatiquement un pipeline et son exécution. Ces outils peuvent vous aider à automatiser des tâches CI/CD ou d’autres tâches, telles que la création de rapports.

  • Déploiements : utilisez des outils tels que les 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 une charge importante de votre équipe d’assurance qualité et garantir que les tests sont standardisés et fiables.

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

  • Surveillance et génération d’alertes : utilisez les outils disponibles dans votre solution de supervision pour inscrire automatiquement les ressources nouvellement déployées et configurer des actions déclenchées par des alertes pour accélérer la correction en cas de problèmes.

  • Auto-réparation : utilisez les 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-réparation et l’auto-conservation.

  • 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 administratives : 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 workflows 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 les environnements élevés peut être risquée. Concentrez-vous et testez étroitement vos approbations automatisées pour vous assurer que des critères spécifiques sont définis pour accorder l’approbation.

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

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

Choisir un outil d’automatisation approprié

Le développement de votre propre automatisation en interne prend beaucoup de temps et peut introduire une charge de gestion pour votre équipe de développement. Ils doivent gérer un outil d’automatisation interne comme ils le font n’importe quel autre logiciel interne. Il est recommandé d’utiliser des outils prêts à l’emploi chaque fois qu’ils peuvent répondre à vos besoins. Entre les outils commerciaux, open source et cloud fournis par la plateforme, de nombreuses options sont disponibles. Il est probable que vous utiliserez divers outils pour créer l’automatisation dont vous avez besoin. Comptez sur votre expertise interne pour guider vos décisions lors de l’évaluation des outils. Votre équipe est peut-être plus familiarisée avec certains langages et frameworks de développement. Vous pouvez d’abord vous concentrer sur des outils prêts à l’emploi qu’ils peuvent utiliser sans une courbe d’apprentissage élevée. Réfléchissez aux tâches que vous envisagez de traiter avec l’automatisation et investissez dans les outils qui peuvent traiter spécifiquement ces tâches. Ne vous procurez pas d’outils que vous préférez généralement, puis envisagez les tâches par la suite.

Tenez compte des facteurs qui peuvent compliquer vos opérations lorsque vous créez votre automatisation, comme le verrouillage de version et la surutilisation du plug-in. Les plug-ins, comme Jenkins ou les plug-ins Azure DevOps, sont un excellent moyen d’ajouter des fonctionnalités. Vous devez adopter des plug-ins quand cela profite à vos objectifs d’automatisation. Toutefois, lorsque vous utilisez plusieurs plug-ins pour effectuer une seule tâche, les mises à jour d’automatisation et la résolution des problèmes peuvent être difficiles. Soyez judicieux dans votre utilisation des plug-ins. Évitez également les solutions qui ont des dépendances de version du framework, car elles sont une charge à gérer au fil du temps. Pour réduire le risque de ces types de problèmes, normalisez votre sélection d’outils d’automatisation et de plug-ins, et utilisez 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-la 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. À l’instar de 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 degré que d’autres composants de charge de travail. Superviser l’automatisation et la soumettre aux mêmes protocoles de test que d’autres composants de charge de travail.

Considérations

  • Parfois, l’efficacité de l’automatisation l’emporte sur la charge de gestion du développement de votre propre solution si aucune solution prête à l’emploi ne répond à vos besoins. Dans ce cas, soyez judicieux dans vos efforts de développement. Concentrez-vous uniquement sur le développement de ce dont vous avez besoin pour couvrir les lacunes que vous ne pouvez pas résoudre avec des solutions prêtes à l’emploi, et minimiser les complexités telles que les dépendances.

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

  • Réfléchissez à 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 majeure partie d’un processus, mais s’en remet ensuite à un humain pour une partie ou une décision spécifique, il est important que vous lui doniez le contexte et les informations nécessaires pour prendre une décision éclairée.

Animation 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. Selon vos besoins et la familiarité de votre équipe avec les outils, 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 des 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 afin d’automatiser les processus CI/CD. GitHub Actions s’intègre à Azure pour simplifier les déploiements. Vous pouvez créer des workflows qui génèrent et testent chaque demande de tirage dans votre dépôt, ou déployer des demandes de tirage fusionnées en production.

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

Azure Automation : PowerShell et Python sont des langages de programmation populaires pour l’automatisation des tâches opérationnelles. Utilisez ces langages pour effectuer des opérations telles que le redémarrage des services, le transfert de journaux entre des magasins de données et la mise à l’échelle de l’infrastructure pour répondre à la demande. Vous pouvez exprimer ces opérations dans du code et les exécuter à la demande. Seuls, ces langages n’offrent pas de plateforme pour la gestion centralisée, le contrôle de version ou l’historique des exécutions. Les langues ne disposent pas non plus d’un mécanisme natif pour répondre aux é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 sur Azure pour héberger et exécuter du 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. Utilisez Automation pour :

  • 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.

Gestionnaire de mise à jour Azure : Update Manager est un service unifié qui permet de gérer et de régir les mises à jour pour les machines virtuelles. Vous pouvez surveiller la conformité des mises à jour Windows et Linux sur l’ensemble de 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 parc 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 la rentabilité. Un environnement de déploiement est une collection de ressources Azure déployées dans des abonnements prédéfinis. Les administrateurs de l’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 de l’infrastructure de développement définissent les 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 créer un script pour la création d’environnements de déploiement et gérer les environnements par programmation.

Azure Logic Apps et Microsoft Power Automate : lorsque vous créez une automatisation des processus numériques (DPA) personnalisée pour gérer des tâches de charge de travail telles que des flux d’approbation ou la création d’intégrations ChatOps, envisagez d’utiliser Logic Apps ou Power Automate. Vous pouvez construire des workflows à partir de modèles et de connecteurs 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 un déclencheur ou sur le temps.

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 qu’ils mettent automatiquement à l’échelle à 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 Automatisation des opérations à l’aide de Azure Event Grid. Cet exemple utilise Logic Apps et Event Grid pour automatiser les tâches opérationnelles.

Liste de contrôle de l’excellence opérationnelle

Reportez-vous à l’ensemble complet de recommandations.