Ce principe du pilier "Excellence opérationnelle" du Google Cloud Well-Architected Framework vous aide à garantir la préparation opérationnelle et les performances de vos charges de travail cloud. Il met l'accent sur l'établissement d'attentes et d'engagements clairs concernant les performances des services, la mise en œuvre d'une surveillance et d'alertes robustes, la réalisation de tests de performances et la planification proactive des besoins en capacité.
Présentation des principes
Différentes organisations peuvent interpréter la préparation opérationnelle différemment. La préparation opérationnelle correspond à la façon dont votre organisation se prépare à exploiter correctement les charges de travail sur Google Cloud. La préparation à l'exploitation d'une charge de travail cloud complexe et multicouche nécessite une planification minutieuse pour la mise en service et les opérations day-2. Ces opérations sont souvent appelées CloudOps.
Domaines d'intérêt de la préparation opérationnelle
La préparation opérationnelle comporte quatre domaines d'intérêt. Chaque domaine d'intérêt se compose d'un ensemble d'activités et de composants nécessaires pour se préparer à exploiter une application ou un environnement complexes dans Google Cloud. Le tableau suivant liste les composants et les activités de chaque domaine d'intérêt :
| Domaine d'intérêt de la préparation opérationnelle | Activités et composants |
|---|---|
| Main d'œuvre |
|
| Processus |
|
| Outils | Outils nécessaires pour prendre en charge les processus CloudOps. |
| Gouvernance |
|
Recommandations
Pour assurer l'état opérationnel et les performances à l'aide de CloudOps, tenez compte des recommandations des sections suivantes. Chaque recommandation de ce document concerne un ou plusieurs domaines de préparation opérationnelle.
Définir des SLO et des SLA
L'une des principales responsabilités de l'équipe des opérations cloud consiste à définir des objectifs de niveau de service (SLO) et des contrats de niveau de service (SLA) pour toutes les charges de travail critiques. Cette recommandation concerne le domaine de gouvernance de la préparation opérationnelle.
Définir des SLO :
Les SLO doivent être spécifiques, mesurables, atteignables, pertinents et limités dans le temps (SMART). Ils doivent également refléter le niveau de service et les performances que vous souhaitez.
- Spécifique : le niveau de service et les performances requis sont clairement définis.
- Mesurable : quantifiable et traçable.
- Réalisable : atteignable dans les limites des capacités et des ressources de votre organisation.
- Pertinent : aligné sur les objectifs et les priorités de l'entreprise.
- Délimité dans le temps : il doit être mesurable et évaluable dans un délai défini.
Par exemple, un SLO pour une application Web peut être "disponibilité de 99,9 %" ou "temps de réponse moyen inférieur à 200 ms". Ces SLO définissent clairement le niveau de service et de performances requis pour l'application Web. Ils peuvent être mesurés et suivis au fil du temps.
Définir des SLA :
Les SLA définissent les engagements envers les clients concernant la disponibilité, les performances et l'assistance du service, y compris les pénalités ou les mesures correctives en cas de non-respect. Les SLA doivent inclure des informations spécifiques sur les services fournis, le niveau de service auquel les clients peuvent s'attendre, les responsabilités du fournisseur de services et du client, ainsi que les pénalités ou les mesures correctives en cas de non-respect. Les SLA servent d'accord contractuel entre les deux parties, garantissant que chacune comprend clairement les attentes et les obligations associées au service cloud.
Suivre les SLO :
Utilisez Cloud Monitoring et des indicateurs de niveau de service (SLI) pour suivre les SLO. Cloud Monitoring offre des fonctionnalités complètes de surveillance et d'observabilité qui permettent à votre organisation de collecter et d'analyser les métriques liées à la disponibilité, aux performances et à la latence des applications et services basés sur le cloud. Les SLI sont des métriques spécifiques que vous pouvez utiliser pour mesurer et suivre les SLO au fil du temps. En utilisant ces outils, vous pouvez surveiller et gérer efficacement les services cloud, et vous assurer qu'ils respectent les SLO et les SLA.
Définir, communiquer et suivre clairement les SLO et les SLA pour tous vos services cloud critiques permet de garantir la fiabilité et les performances de vos applications et services déployés.
Implémenter une observabilité complète
Pour obtenir une visibilité en temps réel sur l'état et les performances de votre environnement cloud, nous vous recommandons d'utiliser une combinaison d'outils Google Cloud Observability et de solutions tierces. Cette recommandation concerne les processus et les outils des domaines d'intérêt de la préparation opérationnelle.
L'implémentation d'une combinaison de solutions d'observabilité vous offre une stratégie d'observabilité complète qui couvre différents aspects de votre infrastructure et de vos applications cloud. Google Cloud Observability est une plate-forme unifiée permettant de collecter, d'analyser et de visualiser les métriques, les journaux et les traces de divers servicesGoogle Cloud , applications et sources externes. En utilisant Cloud Monitoring, vous pouvez obtenir des insights sur l'utilisation des ressources, les caractéristiques de performances et l'état général de vos ressources.
Pour assurer une surveillance complète, surveillez les métriques importantes qui correspondent aux indicateurs d'état du système, tels que l'utilisation du processeur, de la mémoire, le trafic réseau, les E/S disque et les temps de réponse des applications. Vous devez également tenir compte des métriques spécifiques à votre activité. En suivant ces métriques, vous pouvez identifier les goulots d'étranglement potentiels, les problèmes de performances et les contraintes liées aux ressources. Vous pouvez également configurer des alertes pour avertir de manière proactive les équipes concernées en cas d'anomalies ou de problèmes potentiels.
Pour améliorer encore vos capacités de surveillance, vous pouvez intégrer des solutions tierces à Google Cloud Observability. Ces solutions peuvent fournir des fonctionnalités supplémentaires, telles que des analyses avancées, la détection d'anomalies basée sur le machine learning et des fonctionnalités de gestion des incidents. Cette combinaison d'outils Google Cloud Observability et de solutions tierces vous permet de créer un écosystème de surveillance robuste et personnalisable, adapté à vos besoins spécifiques. En utilisant cette approche combinée, vous pouvez identifier et résoudre les problèmes de manière proactive, optimiser l'utilisation des ressources et assurer la fiabilité et la disponibilité globales de vos applications et services cloud.
Implémenter des tests de performances et de charge
Effectuer régulièrement des tests de performances vous permet de vous assurer que vos applications et votre infrastructure cloud peuvent gérer les pics de charge et maintenir des performances optimales. Les tests de charge simulent des schémas de trafic réalistes. Les tests de charge poussent le système dans ses retranchements pour identifier les éventuels goulots d'étranglement et les limites de performances. Cette recommandation concerne les processus et les outils des domaines d'intérêt de la préparation opérationnelle.
Tester les performances : utilisez Cloud Load Balancing et des services de test de charge pour simuler des schémas de trafic réels et tester la résistance de vos applications. Ces outils fournissent des informations précieuses sur le comportement de votre système dans diverses conditions de charge et peuvent vous aider à identifier les domaines qui nécessitent une optimisation.
Optimiser les performances : en fonction des résultats des tests de performances, vous pouvez prendre des décisions pour optimiser votre infrastructure cloud et vos applications afin d'obtenir des performances et une évolutivité optimales. Cette optimisation peut impliquer d'ajuster l'allocation des ressources, de modifier les configurations ou d'implémenter des mécanismes de mise en cache.
Par exemple, si vous constatez que votre application ralentit pendant les périodes de trafic élevé, vous devrez peut-être augmenter le nombre de machines virtuelles ou de conteneurs qui lui sont alloués. Vous devrez peut-être aussi ajuster la configuration de votre serveur Web ou de votre base de données pour améliorer les performances.
En effectuant régulièrement des tests de performances et en implémentant les optimisations nécessaires, vous pouvez vous assurer que vos applications et votre infrastructure basées dans le cloud fonctionnent toujours à leur plein potentiel, et offrent une expérience fluide et réactive à vos utilisateurs. Cela peut vous aider à conserver un avantage concurrentiel et à gagner la confiance de vos clients.
Planifier et gérer la capacité
Pour que vos systèmes cloud continuent de fonctionner et de s'adapter aux variations de la demande, vous devez planifier et gérer activement la capacité des ressources cloud. Cette recommandation concerne les processus et les outils à prendre en compte pour la préparation opérationnelle.
Tenez compte des limites de service et gérez les quotas de ressources : pour planifier la capacité de vos ressources cloud, commencez par les limites strictes (les contraintes fixes) des services que vous prévoyez d'utiliser.
- Estimez les exigences de quota pour le calcul, le stockage, les limites d'API et les autres ressources dont vous avez besoin. Demandez les ajustements de quota appropriés avant d'avoir besoin des ressources.
- Chargez les métriques de Cloud Monitoring dans BigQuery, puis utilisez-les pour identifier les tendances du trafic et suivre la charge du système au fil du temps.
- Prévoyez la demande de ressources en fonction des prochaines campagnes marketing, des inscriptions d'utilisateurs et des déploiements de fonctionnalités. Tenez également compte de vos engagements de SLA actuels et prévus.
Concevez votre application pour qu'elle soit flexible et efficace : lorsque vous planifiez la capacité de vos déploiements cloud, dissociez les composants de l'application des types de machines spécifiques. Lorsque vous épinglez une charge de travail à un seul type de machine, vous ne pouvez pas profiter du nouveau matériel cloud ni des changements de capacité régionale.
- Pour les charges de travail qui nécessitent du matériel spécialisé, comme des instances à mémoire élevée ou des GPU, assurez-vous de pouvoir obtenir des ressources lorsque vous en avez besoin. Utilisez les réservations futures pour vous assurer de la capacité des types de machines critiques jusqu'à un an à l'avance.
- Pour les charges de travail de traitement par lot ou d'entraînement de modèles qui peuvent tolérer des heures de début variables, planifiez la capacité de manière dynamique à l'aide de VM à démarrage flexible. Ces VM utilisent la planification dynamique des charges de travail pour mettre les requêtes en file d'attente et réduire les coûts de calcul.
- Évitez de réserver des familles de machines ou des ressources plus anciennes pour les environnements de développement transitoires.
- Planifiez les ressources dans les régions secondaires afin de pouvoir basculer efficacement pour la reprise après sinistre.
Implémentez le scaling automatique : pour adapter de manière dynamique vos ressources cloud aux fluctuations de la charge de travail en temps réel, implémentez des stratégies d'autoscaling. Les algorithmes d'autoscaling évaluent des métriques telles que l'utilisation du processeur, la pression sur la mémoire et la profondeur de la file d'attente. En fonction de l'évaluation, les ressources sont mises à l'échelle lors des périodes de trafic maximal et réduites lors des périodes de faible utilisation, ce qui permet d'optimiser le coût de vos ressources cloud.
- Configurez des groupes d'instances gérés (MIG) avec des modèles d'instance mixtes qui combinent les générations actuelles et plus récentes de types de machines.
- Assurez-vous que vos configurations de MIG incluent à la fois la flexibilité des instances (en spécifiant plusieurs types de machines compatibles) et la flexibilité de l'emplacement (en répartissant les cibles sur plusieurs zones d'une région). En fonction des exigences de capacité actuelles, votre système provisionne automatiquement le prochain type de machine préféré de votre liste de secours sans abandonner les requêtes ni limiter les ressources de calcul.
Surveiller et optimiser en continu
Pour gérer et optimiser les charges de travail cloud, vous devez établir un processus de surveillance et d'analyse continues des métriques de performances. Cette recommandation concerne les processus et les outils, qui sont des domaines d'intérêt de l'aptitude opérationnelle.
Suivre et collecter des données :
Pour établir un processus de surveillance et d'analyse continues, vous devez suivre, collecter et évaluer les données liées à différents aspects de votre environnement cloud. Grâce à ces données, vous pouvez identifier de manière proactive les axes d'amélioration, optimiser l'utilisation des ressources et vous assurer que votre infrastructure cloud répond systématiquement à vos attentes en termes de performances, voire les dépasse.
Examiner les journaux et les traces :
Les journaux fournissent des informations précieuses sur les événements système, les erreurs et les avertissements. Les traces fournissent des informations détaillées sur le flux de requêtes dans votre application. En analysant les journaux et les traces, vous pouvez identifier les problèmes potentiels et leurs causes racines, et mieux comprendre le comportement de vos applications dans différentes conditions. Les métriques telles que le délai aller-retour entre les services peuvent vous aider à identifier et à comprendre les goulots d'étranglement dans vos charges de travail.
Optimiser les performances :
Utilisez des techniques d'optimisation des performances pour optimiser considérablement les temps de réponse des applications et l'efficacité globale. Voici quelques exemples de techniques que vous pouvez utiliser :
- Mise en cache : stockez les données fréquemment consultées en mémoire pour réduire le besoin de requêtes de base de données ou d'appels d'API répétés.
- Optimisation de la base de données : utilisez des techniques telles que l'indexation et l'optimisation des requêtes pour améliorer les performances des opérations de base de données.
- Profilage du code : identifiez les zones de votre code qui consomment trop de ressources ou qui entraînent des problèmes de performances.