Elastizität nutzen

Last reviewed 2024-12-06 UTC

Dieses Prinzip in der Säule zur Leistungsoptimierung des Google Cloud Well-Architected Framework enthält Empfehlungen, wie Sie Elastizität in Ihr System einbauen können. Elastizität ist die Fähigkeit, Ressourcen dynamisch an Änderungen der Arbeitslastanforderungen anzupassen.

Durch Elastizität können verschiedene Komponenten eines Systems unabhängig voneinander skaliert werden. Diese gezielte Skalierung kann die Leistung und Kosteneffizienz verbessern, indem Ressourcen genau dort zugewiesen werden, wo sie benötigt werden, ohne dass Ressourcen über- oder unterdimensioniert werden.

Prinzipübersicht

Die Leistungsanforderungen eines Systems wirken sich direkt darauf aus, wann und wie das System vertikal oder horizontal skaliert wird. Sie müssen die Kapazität des Systems bewerten und die Last bestimmen, die das System im Normalfall bewältigen soll. Anschließend müssen Sie festlegen, wie das System auf eine Zunahme und Abnahme der Last reagieren soll.

Wenn die Last zunimmt, muss das System horizontal skalieren, vertikal skalieren oder beides. Bei der horizontalen Skalierung fügen Sie Replikatknoten hinzu, um sicherzustellen, dass das System über genügend Gesamtkapazität verfügt, um die erhöhte Nachfrage zu decken. Bei der vertikalen Skalierung ersetzen Sie die vorhandenen Komponenten der Anwendung durch Komponenten mit mehr Kapazität, mehr Arbeitsspeicher und mehr Speicher.

Wenn die Last abnimmt, muss das System herunterskaliert werden (horizontal, vertikal oder beides).

Definieren Sie die Umstände , unter denen das System hoch- oder herunterskaliert wird. Planen Sie, Systeme in bekannten Zeiträumen mit hohem Traffic manuell hochzuskalieren. Verwenden Sie Tools wie Autoscaling, die auf eine Zunahme oder Abnahme der Last reagieren.

Empfehlungen

Damit Sie von der Elastizität profitieren können, beachten Sie die Empfehlungen in den folgenden Abschnitten.

Spitzenlastzeiten planen

Sie müssen einen effizienten Skalierungspfad für bekannte Ereignisse planen, z. B. für erwartete Zeiträume mit erhöhter Kundennachfrage.

Erwägen Sie, Ihr System vor bekannten Zeiträumen mit hohem Traffic hochzuskalieren. Wenn Sie beispielsweise ein Einzelhandelsunternehmen sind, erwarten Sie, dass die Nachfrage während saisonaler Schlussverkäufe steigt. Wir empfehlen, Ihre Systeme vor diesen Verkäufen manuell hochskalieren oder horizontal skalieren, damit Ihr System die erhöhte Last sofort bewältigen oder vorhandene Limits sofort anpassen kann. Andernfalls kann es mehrere Minuten dauern, bis das System Ressourcen als Reaktion auf Echtzeitänderungen hinzufügt. Die Kapazität Ihrer Anwendung steigt möglicherweise nicht schnell genug und es kann zu Verzögerungen für einige Nutzer kommen.

Bei unbekannten oder unerwarteten Ereignissen wie einem plötzlichen Anstieg der Nachfrage oder des Traffics können Sie Autoscaling-Funktionen verwenden, um eine elastische Skalierung basierend auf Messwerten auszulösen. Zu diesen Messwerten können die CPU-Auslastung, die Kapazität des Load Balancers, die Latenz und sogar benutzerdefinierte Messwerte gehören, die Sie in Cloud Monitoring definieren.

Nehmen wir beispielsweise eine Anwendung, die in einer verwalteten Instanzgruppe (Managed Instance Group, MIG) von Compute Engine ausgeführt wird. Diese Anwendung erfordert, dass jede Instanz optimal funktioniert, bis die durchschnittliche CPU-Auslastung 75 % erreicht. In diesem Beispiel können Sie eine Autoscaling-Richtlinie definieren, die weitere Instanzen erstellt, wenn die CPU-Auslastung den Schwellenwert erreicht. Diese neu erstellten Instanzen helfen, die Last zu absorbieren, sodass die durchschnittliche CPU-Auslastung optimal bleibt, bis die maximale Anzahl von Instanzen erreicht ist, die Sie für die MIG konfiguriert haben. Wenn die Nachfrage sinkt, werden die nicht mehr benötigten Instanzen durch die Autoscaling-Richtlinie entfernt.

Planen Sie Ressourcen-Slotreservierungen in BigQuery oder passen Sie die Limits für Autoscaling-Konfigurationen in Spanner mit dem verwalteten Autoscaler an.

Vorausschauende Skalierung verwenden

Wenn Ihre Systemkomponenten Compute Engine umfassen, müssen Sie prüfen, ob vorausschauendes Autoscaling für Ihre Arbeitslast geeignet ist. Beim vorausschauenden Autoscaling wird die zukünftige Last anhand der Verlaufstrends Ihrer Messwerte prognostiziert, z. B. der CPU-Auslastung. Prognosen werden alle paar Minuten neu berechnet, sodass das Autoscaling seine Prognose schnell auf die letzten Änderungen der Überlastung anpasst. Ohne vorausschauendes Autoscaling kann das Autoscaling eine Gruppe nur in direkter Reaktion auf beobachtete Laständerungen in Echtzeit skalieren. Beim vorausschauenden Autoscaling werden sowohl Echtzeitdaten als auch Verlaufsdaten verwendet, um auf die aktuelle und die prognostizierte Last zu reagieren.

Serverlose Architekturen implementieren

Erwägen Sie die Implementierung einer serverlosen Architektur mit serverlosen Diensten, die von Natur aus elastisch sind, z. B.:

Im Gegensatz zum Autoscaling in anderen Diensten, für die Regeln optimiert werden müssen (z. B. Compute Engine), ist das serverlose Autoscaling sofort verfügbar und kann auf null Ressourcen herunterskaliert werden.

Autopilot-Modus für Kubernetes verwenden

Für komplexe Anwendungen, die mehr Kontrolle über Kubernetes erfordern, sollten Sie den Autopilot-Modus in der Google Kubernetes Engine (GKE) in Betracht ziehen. Der Autopilot-Modus bietet standardmäßig Automatisierung und Skalierbarkeit. GKE skaliert Knoten und Ressourcen automatisch basierend auf dem Traffic. GKE verwaltet Knoten, erstellt neue Knoten für Ihre Anwendungen und konfiguriert automatische Upgrades und Reparaturen.