Exploiter l'élasticité

Last reviewed 2024-12-06 UTC

Ce principe du pilier d'optimisation des performances du Google Cloud framework d'architecture fournit des recommandations pour vous aider à intégrer l'élasticité, c'est-à-dire la capacité à ajuster les ressources de manière dynamique en fonction des changements des exigences de charge de travail.

L'élasticité permet aux différents composants d'un système de s'adapter indépendamment. Cette mise à l'échelle ciblée peut contribuer à améliorer les performances et l'efficacité des coûts en allouant des ressources précisément là où elles sont nécessaires, sans surprovisionnement ni sous-provisionnement.

Présentation des principes

Les exigences de performances d'un système ont une incidence directe sur 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 que le système doit gérer à la référence. Vous devez ensuite déterminer comment le système doit réagir aux augmentations et aux diminutions de la charge.

Lorsque la charge augmente, le système doit effectuer un scaling horizontal horizontalement, verticalement ou les deux. Pour le scaling horizontal, ajoutez des nœuds réplicatifs afin de vous assurer que le système dispose d'une capacité globale suffisante pour répondre à la demande accrue. Pour la mise à l'échelle verticale, remplacez les composants existants de l'application par des composants qui offrent plus de capacité, de mémoire et de stockage.

Lorsque la charge diminue, le système doit réduire son échelle (horizontalement, verticalement ou les deux).

Définissez les circonstances dans lesquelles le système doit être mis à l'échelle. Planifiez d'augmenter manuellement les systèmes pour les périodes de trafic élevé connues. Utilisez des outils tels que l'autoscaling, qui réagit aux augmentations ou diminutions de la charge.

Recommandations

Pour profiter de l'élasticité, tenez compte des recommandations des sections suivantes.

Planifier les périodes de pointe

Vous devez planifier un chemin de mise à l'échelle efficace pour les événements connus, tels que les périodes d'augmentation de la demande client attendues.

Envisagez d'augmenter la capacité de votre système avant les périodes de trafic intense connues. Par exemple, si vous êtes une entreprise de vente au détail, vous prévoyez une augmentation de la demande pendant les soldes saisonniers. Nous vous recommandons d'augmenter ou de effectuer un scaling horizontal manuellement la taille de vos systèmes avant ces ventes afin de vous assurer que votre système peut immédiatement gérer la charge accrue ou ajuster immédiatement les limites existantes. Sinon, l'ajout de ressources en réponse aux modifications en temps réel peut prendre plusieurs minutes. La capacité de votre application risque de ne pas augmenter assez rapidement et de causer 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 les 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 les métriques personnalisées que vous définissez dans Cloud Monitoring.

Prenons l'exemple d'une application exécutée sur un groupe d'instances géré (MIG) Compute Engine. Cette application exige 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 d'autres 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 stratégie 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 vos composants 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 en date. 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 intrinsèquement élastiques, par exemple:

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.

Utiliser le mode Autopilot pour Kubernetes

Pour les applications complexes qui nécessitent un contrôle plus strict sur Kubernetes, envisagez d'utiliser le mode Autopilot dans Google Kubernetes Engine (GKE). Le mode Autopilot offre une automatisation et une é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.