Ce principe du pilier "Optimisation des performances" du Google Cloud Well-Architected Framework fournit des recommandations pour vous aider à intégrer l'élasticité, qui est la capacité d'ajuster les ressources de manière dynamique en fonction des modifications des exigences de la charge de travail.
L'élasticité permet à différents composants d'un système de faire évoluer leur capacité indépendamment les uns des autres. Ce scaling ciblé peut améliorer les performances et l'efficacité des coûts en allouant les ressources précisément là où elles sont nécessaires, sans surprovisionner ni sous-provisionner vos ressources.
Présentation du principe
Les exigences de performances d'un système influencent directement le moment et la manière dont le système évolue verticalement ou horizontalement. Vous devez évaluer la capacité du système et déterminer la charge qu'il est censé gérer au niveau de référence. Ensuite, vous devez déterminer comment vous souhaitez que le système réponde aux augmentations et aux diminutions de la charge.
Lorsque la charge augmente, le système doit effectuer un scaling horizontal, augmenter la capacité ou les deux. Pour le scaling horizontal, ajoutez des nœuds de réplica afin de vous assurer que le système dispose d'une capacité globale suffisante pour répondre à la demande accrue. Pour le scaling vertical, remplacez les composants existants de l'application par des composants offrant plus de capacité, de mémoire et de stockage.
Lorsque la charge diminue, le système doit réduire sa capacité (horizontalement, verticalement ou les deux).
Définissez les circonstances dans lesquelles le système augmente ou diminue sa capacité. Prévoyez d'augmenter manuellement la capacité des systèmes pour les périodes connues de trafic élevé. Utilisez des outils tels que l'autoscaling, qui répond aux augmentations ou aux diminutions de la charge.
Recommandations
Pour profiter de l'élasticité, tenez compte des recommandations des sections suivantes.
Planifier les périodes de charge maximale
Vous devez planifier un chemin de scaling efficace pour les événements connus, tels que les périodes prévues d'augmentation de la demande des clients.
Envisagez d'augmenter la capacité de votre système avant les périodes connues de trafic élevé. Par exemple, si vous êtes une entreprise de vente au détail, vous vous attendez à ce que la demande augmente pendant les soldes saisonnières. Nous vous recommandons d'augmenter manuellement la capacité de vos systèmes ou d'effectuer un scaling horizontal avant ces soldes pour vous assurer qu'ils peuvent gérer immédiatement la charge accrue ou ajuster immédiatement les limites existantes. Sinon, le système peut mettre plusieurs minutes à ajouter des ressources en réponse aux modifications en temps réel. La capacité de votre application risque de ne pas augmenter assez rapidement et de provoquer des retards pour certains utilisateurs.
Pour les événements inconnus ou inattendus, tels qu'une augmentation soudaine de la demande ou du trafic, vous pouvez utiliser des fonctionnalités d'autoscaling pour déclencher un scaling élastique basé sur des métriques. Ces métriques peuvent inclure l'utilisation du processeur, la capacité de diffusion de l'équilibreur de charge , la latence et même des métriques personnalisées que vous définissez dans Cloud Monitoring.
Prenons l'exemple d'une application qui s'exécute sur un Compute Engine groupe d'instances géré (MIG). Cette application nécessite que chaque instance fonctionne de manière optimale jusqu'à ce que l'utilisation moyenne du processeur atteigne 75 %. Dans cet exemple, vous pouvez définir une règle d'autoscaling qui crée davantage d'instances lorsque l'utilisation du processeur atteint le seuil. Ces instances nouvellement créées permettent d'absorber la charge, ce qui garantit que l'utilisation moyenne du processeur reste à un taux optimal jusqu'à ce que le nombre maximal d'instances que vous avez configuré pour le MIG soit atteint. Lorsque la demande diminue, la règle d'autoscaling supprime les instances qui ne sont plus nécessaires.
Planifiez des réservations d'emplacements de ressources dans BigQuery ou ajustez les limites des configurations d'autoscaling dans Spanner à l'aide de l'autoscaler géré.
Utiliser le scaling prédictif
Si les composants de votre système incluent Compute Engine, vous devez évaluer si l'autoscaling prédictif est adapté à votre charge de travail. L'autoscaling prédictif prévoit la charge future en fonction des tendances historiques de vos métriques, par exemple l'utilisation du processeur. Les prévisions sont recalculées toutes les deux ou trois minutes, ce qui permet à l'autoscaler d'adapter rapidement ses prévisions aux dernières variations de charge. Sans autoscaling prédictif, un autoscaler ne peut effectuer un scaling horizontal d'un groupe que de manière réactive, en fonction des variations de charge observées en temps réel. L'autoscaling prédictif fonctionne à la fois avec les données en temps réel et les données historiques pour répondre à la charge actuelle et prévue.
Implémenter des architectures sans serveur
Envisagez d'implémenter une architecture sans serveur avec des services sans serveur qui sont intrinsèquement élastiques, tels que les suivants :
Contrairement à l'autoscaling dans d'autres services qui nécessitent des règles d'ajustement (par exemple, Compute Engine), l'autoscaling sans serveur est instantané et peut être réduit à zéro ressource.
Utiliser le mode Autopilot pour Kubernetes
Pour les applications complexes qui nécessitent un contrôle plus poussé de Kubernetes, envisagez le mode Autopilot dans Google Kubernetes Engine (GKE). Le mode Autopilot offre l'automatisation et l'évolutivité par défaut. GKE effectue un scaling automatique des nœuds et des ressources en fonction du trafic. GKE gère les nœuds, crée des nœuds pour vos applications et configure les mises à niveau et les réparations automatiques.