Ce principe du pilier d'optimisation des performances du Google Cloud Well-Architected Framework fournit des recommandations pour vous aider à intégrer l'élasticité, qui est la capacité à ajuster les ressources de manière dynamique en fonction des changements dans les exigences de charge de travail.
L'élasticité permet à différents composants d'un système de s'adapter indépendamment. Cette mise à l'échelle ciblée 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 les surprovisionner ni les sous-provisionner.
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 est censé gérer à la base. 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 de réplique 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 la capacité (horizontalement, verticalement ou les deux).
Définissez les circonstances dans lesquelles le système augmente ou diminue sa capacité. Prévoyez de faire évoluer manuellement les 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 de faire évoluer votre système avant les périodes de trafic élevé connues. 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 de mettre à l'effectuer un scaling horizontal manuellement vos systèmes avant ces périodes de soldes pour vous assurer qu'ils peuvent gérer immédiatement l'augmentation de la charge ou ajuster immédiatement les limites existantes. Dans le cas contraire, le système peut mettre plusieurs minutes à ajouter des ressources en réponse aux modifications en temps réel. La capacité de votre application peut ne pas augmenter assez rapidement, ce qui peut entraîner des retards pour certains utilisateurs.
Pour les événements inconnus ou inattendus, comme 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 des métriques personnalisées que vous définissez dans Cloud Monitoring.
Prenons l'exemple d'une application qui s'exécute 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 des instances supplémentaires lorsque l'utilisation du processeur atteint le seuil. Ces instances nouvellement créées permettent d'absorber la charge, ce qui permet de s'assurer 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 les 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 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 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é sur Kubernetes, envisagez le mode Autopilot dans Google Kubernetes Engine (GKE). Le mode Autopilot fournit 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.