Profiter de l'élasticité

Last reviewed 2024-12-06 UTC

Ce principe du pilier "Optimisation des performances" du Google Cloud framework d'architecture 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 effectue un scaling vertical ou horizontal. 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, un scaling vertical, 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 effectuer un scaling à la baisse (horizontal, vertical ou les deux).

Définissez les circonstances dans lesquelles le système effectue un scaling à la hausse ou à la baisse. Prévoyez d'effectuer manuellement un scaling à la hausse 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 pic de charge

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'effectuer un scaling à la hausse 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'effectuer manuellement un scaling à la hausse ou effectuer un scaling horizontal de vos systèmes 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 contribue à garantir 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 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 meilleur contrôle 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.