Überlegungen zur Kapazitätsplanung
Die grundlegende Kapazitätsplanung beginnt mit einfachen Berechnungen, aber einige Faktoren können den Prozess erschweren. Zusätzlich zu den einfachen aktuellen und vorhergesagten Nutzungszahlen müssen Sie auch die folgenden Überlegungen berücksichtigen:
- Dienstgrenzen und Kontingente
- Kosteneinschränkungen
- Code- und Konfigurationsineffizienzen
- Abhängigkeiten
In dieser Lerneinheit wird erläutert, wie sich diese Überlegungen auf Ihre Kapazitätsplanung auswirken und wie Sie diese Punkte angehen können.
Dienstgrenzen und Kontingente
Viele Menschen sehen Cloud Computing als unbegrenzte Ressource. Im Vergleich zu herkömmlichen Server-/Rechenzentrumsmodellen scheint die Kapazität der Cloud unendlich zu sein. Die Cloud bietet ein ganz neues Maß an Skalierbarkeit. Allerdings gibt es auch hier einige Einschränkungen. Zur Kapazitätsplanung gehört das Wissen, wann diese Dienstgrenzwerte erreicht werden.
Bei der Betrachtung Ihres Systems und seiner Architektur müssen Sie die Grenzwerte für die von Ihnen verwendeten Clouddienste kennen. Beispielsweise kann eine VM-Verfügbarkeitsgruppe in Azure standardmäßig maximal 200 VMs umfassen. Zu Beginn mag dieser Grenzwert für VMs ausreichend erscheinen. Bei Erreichen des Grenzwerts können Sie jedoch keine weiteren VMs bereitstellen, was zu einem Ausfall führen kann.
Ebenso sind standardmäßig 250 Speicherkonten pro Abonnement und Region möglich. Bei diesen Grenzwerten handelt es sich um Beispiele für weiche Grenzwerte, die erhöht werden können. Einige Dienste verfügen jedoch über Obergrenzen, die Sie unter folgendem Link finden können.
Grenzen, Kontingente und Einschränkungen für Azure-Abonnements und -Dienste
Diese Grenzwerte und Kontingente müssen berücksichtigt und überwacht werden. Sehen wir uns nun an, wie Sie das tun können.
Azure-Portal
Im Abschnitt Nutzung und Kontingente unter Abonnements > Einstellungen im Navigationsbereich können Sie die Dienstkontingente und Ihre aktuelle Nutzung dieser Kontingente anzeigen. Sie können nach der Dienstkategorie (z. B. Netzwerk/Computing) und der Azure-Region filtern. Es wird angezeigt, wo Sie sich im Abgleich mit den Grenzwerten befinden.
Über Code
Sie können den Endpunkt Usage - List
wie in diesem verkürzten Beispiel gezeigt für beliebige Azure-Dienste verwenden, um Informationen zur aktuellen Ressourcennutzung sowie die Grenzwerte für Computeressourcen im Abonnement abzurufen.
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/usages?api-version=2023-03-01
{
"currentValue": 124,
"/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/westeurope/usages/VirtualNetworks",
"limit": 1000,
"name": {
"localizedValue": "Virtual Networks",
"value": "VirtualNetworks"
},
"unit": "Count"
}
Sie können sehen, dass die aktuelle Anzahl der verwendeten virtuellen Azure-Netzwerke (VNets) bei 124 liegt; der Grenzwert beträgt 1.000. Für Erhöhungen des Grenzwerts ist eine Supportanfrage nötig. Sie sollten deshalb möglichst frühzeitig abschätzen können, wann der Schwellenwert erreicht sein wird.
Kosteneinschränkungen
Bei der Skalierung geht es nicht nur darum, mehr Ressourcen nutzen zu können. Es ist wichtig, dass Ihre Organisation die Kosten Ihrer Cloudumgebung kennt und weiß, dass das Hinzufügen von weiteren Ressourcen in der Regel zu weiteren Kosten führt. Sprechen Sie sich mit Ihren Finanzteams über die aktuellen und prognostizierten Cloudausgaben ab.
Bei der ersten Planung der Systeme und bei regelmäßigen Überprüfungen der vorhandenen Systeme sollten Sie immer die Kosten prognostizieren. Azure stellt Tools bereit, die Ihnen bei den folgenden Aufgaben helfen können:
- Planen der Kosten für eine Umgebung mit dem Azure-Rechner
- Sie können die aktuellen und erwarteten monatlichen Ausgaben im Azure-Portal überprüfen.
- Sie können Budgets in Microsoft Cost Management festlegen. Mit diesem Tool können Sie Ihre Kosten in verschiedenen Bereichen überprüfen, z. B. für Verwaltungsgruppe, Ressourcengruppe und Abonnement.
Code- und Konfigurationsineffizienzen
In manchen Fällen kann ein Problem durch zusätzliche Ressourcen behoben werden, aber dies ist mit Kosten verbunden. Manchmal ist die Skalierung nicht die Lösung oder nicht die komplette Lösung. In einigen Fällen entpuppt sich das vermeintliche Skalierungsproblem als Problem, das tatsächlich von Codingfehlern oder falschen Konfigurationen verursacht wird.
Sie können Kosten und Zeit sparen, indem Sie zuerst die Fehler suchen, bevor Sie Ressourcen aufskalieren. Einige Beispiele für diesen Ansatz lauten wie folgt:
- Wenn Sie über eine schlecht entworfene Datenbank mit heißen Partitionen verfügen (z. B. bei Verwendung einer einzigen Partition in einer riesigen NoSQL-Datenbank), ist die Datenbank unabhängig von der Skalierung langsam.
- Wenn Sie über ineffiziente Datenbankabfragen verfügen, sollten Sie deren Leistung erhöhen, bevor Sie mehr Ressourcen für die Datenbank bereitstellen. In einigen Fällen können Sie die Kosten um den Faktor 100 senken, indem Sie einer Datenbank den richtigen, auf häufigen Abfragen basierenden Index hinzufügen.
- Wenn Ihre Timeoutwerte falsch festgelegt sind, können die Datenbankverbindungen aufgrund von Wiederholungsversuchen nach inkonsistenten Timeouts zwischen Server und Datenbank überlastet sein. In diesem Fall müssen Sie die Einstellungen korrigieren, bevor Sie die Datenbank skalieren.
- Wenn der Code des Entwicklers ineffizient ist, können Sie effizienteren Code schreiben, um das Problem zu beheben? Möglicherweise gibt der Code keinen Arbeitsspeicher frei, obwohl dies möglich wäre, und Sie verwenden VMs mit größerem Arbeitsspeicher als nötig. Solche Korrekturen können zu erheblichen Kosteneinsparungen führen.
Abhängigkeiten
Die erforderlichen Änderungen zum Beheben einiger der in diesem Modul beschriebenen Probleme müssen oftmals von den Entwicklern Ihrer Anwendung durchgeführt werden. Einige der hier empfohlenen Lösungen und Best Practices setzen die Zusammenarbeit zwischen Ihnen und den Entwickler*innen voraus.
Möglicherweise können Sie nicht alle diese Empfehlungen vollständig selbst implementieren. Wenn Sie jedoch das Cloudsystem und seine Funktionen und Merkmale verstehen, können Sie zu einer treibenden Kraft für die Optimierung Ihrer Systeme sowie deren Skalierbarkeit und Zuverlässigkeit werden.