Freigeben über


Übungen für eine nachhaltige Softwareentwicklung in Azure Kubernetes Service (AKS)

Bei den Prinzipien für eine nachhaltige Softwareentwicklung handelt es sich um eine Reihe von Kompetenzen, die Ihnen dabei helfen, nachhaltige Anwendungen zu definieren, zu erstellen und auszuführen. Das Ziel besteht darin, die CO2-Bilanz jedes Aspekts Ihrer Anwendung zu verbessern. Der Leitfaden zu Azure Well-Architected Framework für Nachhaltigkeit orientiert sich an The Principles of Sustainable Software Engineering der Green Software Foundation und bietet einen Überblick über die Prinzipien der nachhaltigen Softwareentwicklung.

Eine nachhaltige Softwareentwicklung bedeutet eine Verlagerung der Prioritäten und des Schwerpunkts. Bei der Entwicklung und Ausführung eines Großteils der Software stehen zumeist hohe Geschwindigkeit und kurze Wartezeiten im Vordergrund. Bei der nachhaltigen Softwareentwicklung geht es dagegen darum, die CO2-Emissionen so weit wie möglich zu senken.

  • Das Anwenden von Prinzipien für eine nachhaltige Softwareentwicklung kann zur Beschleunigung oder zur Verringerung von Wartezeiten beitragen – etwa durch die Verkürzung des zurückzulegenden Network Traversals.
  • Das Senken der CO2-Emissionen führt ggf. zur Verlangsamung oder zu längeren Wartezeiten – etwa aufgrund der Zurückstellung von Workloads mit niedriger Priorität.

Der folgende Leitfaden konzentriert sich auf Dienste, die Sie in Azure mit Azure Kubernetes Service (AKS) erstellen oder betreiben. Dieser Artikel enthält Entwurfs- und Konfigurationschecklisten, empfohlene Entwurfspraktiken und Konfigurationsoptionen. Überprüfen Sie die Prioritäten, Anforderungen und Nachteile für Ihre Anwendung, bevor Sie Prinzipien für eine nachhaltige Softwareentwicklung auf Ihre Anwendung anwenden.

Voraussetzungen

  • Das Verständnis der Nachhaltigkeitsrichtlinien von Well-Architected Framework können Ihnen helfen, eine qualitativ hochwertige, stabile und effiziente Cloudarchitektur zu erstellen. Es wird empfohlen, mehr über nachhaltige Workloads zu lesen und Ihre Workload mithilfe der Microsoft Azure Well-Architected Review-Bewertung zu überprüfen.
  • Die eindeutig definierten Geschäftsanforderungen sind entscheidend für das Erstellen von Anwendungen, da sie möglicherweise direkte Auswirkungen auf Cluster- und Workloadarchitekturen und -konfigurationen haben. Überprüfen Sie beim Erstellen oder Aktualisieren vorhandener Anwendungen neben dem ganzheitlichen Lebenszyklus Ihrer Anwendung die Entwurfsbereiche für Nachhaltigkeit von Well-Architected Framework.

Grundlegendes zum Modell der gemeinsamen Verantwortung

Nachhaltigkeit ist eine gemeinsame Verantwortung von Cloudanbietern und Kunden oder Partnern, sie AKS-Cluster auf der Plattform entwickeln und einsetzen. Die Bereitstellung von AKS macht es nicht automatisch nachhaltig, auch wenn die Rechenzentren für Nachhaltigkeit optimiert sind. Durch nicht ordnungsgemäß optimierte Anwendungen wird möglicherweise mehr CO2 als erforderlich ausgestoßen.

Erfahren Sie mehr über das Modell der gemeinsamen Verantwortung für Nachhaltigkeit.

Entwurfsprinzipien

  • CO2-Effizienz: Reduzieren Sie den CO2 so weit wie möglich.

    Eine CO2-effiziente Cloudanwendung ist eine optimierte Anwendung, und der Ausgangspunkt hierfür ist die Kostenoptimierung.

  • Energieeffizienz: Verwenden Sie die geringstmögliche Energiemenge.

    Eine Möglichkeit, die Energieeffizienz zu steigern, besteht darin, die Anwendung auf so wenigen Servern wie möglich und mit der höchsten Auslastungsrate auszuführen. Dadurch wird auch die Hardwareeffizienz erhöht.

  • Hardwareeffizienz: Reduzieren Sie den CO2-Bedarf, so weit es geht.

    Es gibt zwei Hauptansätze für die Hardwareeffizienz:

    • Für Endbenutzergeräte wird die Lebensdauer der Hardware verlängert.
    • Für Cloud Computing wird die Ressourcenauslastung erhöht.
  • CO2-Bewusstsein: Tun Sie mehr, wenn Sie sauberen Strom erhalten, und weniger, wenn Sie Strom aus „schmutzigen“ Energiequellen nutzen.

    CO2-bewusst zu sein bedeutet, auf Veränderungen in der CO2-Intensität durch Erhöhen oder Senken der Nachfrage zu reagieren.

Entwurfsmuster und Methoden

Bevor Sie die detaillierten Empfehlungen in den einzelnen Entwurfsbereichen überprüfen, empfehlen wir Ihnen, die folgenden Entwurfsmuster für die Erstellung nachhaltiger Workloads in AKS sorgfältig zu berücksichtigen:

Entwurfsmuster Gilt für Workloads Gilt für Cluster
Entwurf für die unabhängige Skalierung von logischen Komponenten ✔️
Entwurf für die ereignisgesteuerte Skalierung ✔️
Ziel für den zustandslosen Entwurf ✔️
Aktivieren von automatischen Cluster- und Knotenupdates ✔️
Installieren von unterstützten Add-Ons und Erweiterungen ✔️ ✔️
Containerisieren Ihrer Workload, sofern möglich ✔️
Verwenden von energieeffizienter Hardware ✔️
Anpassen der Skalierbarkeitsanforderungen und Nutzen automatischer Skalierungs- und Burstingfunktionen ✔️
Deaktivieren von Workloads und Knotenpools außerhalb der Geschäftszeiten ✔️ ✔️
Löschen nicht verwendeter Ressourcen ✔️ ✔️
Taggen Ihrer Ressourcen ✔️ ✔️
Optimieren der Speichernutzung ✔️ ✔️
Auswählen einer Region die den Benutzern möglichst nah ist ✔️
Reduzieren des Network Traversals zwischen Knoten ✔️
Bewerten mithilfe eines Dienstnetzes ✔️
Optimieren der Protokollsammlung ✔️ ✔️
Zwischenspeichern statischer Daten ✔️ ✔️
Bewerten, ob TLS-Abschluss verwendet werden soll ✔️ ✔️
Verwenden von cloudnativen Netzwerksicherheitstools und -kontrollen ✔️ ✔️
Überprüfen auf Sicherheitsrisiken ✔️ ✔️

Anwendungsentwurf

In diesem Abschnitt erfahren Sie mehr darüber, wie Sie Ihre Anwendungen bezüglich eines nachhaltigeren Anwendungsentwurfs optimieren können.

Entwurf für die unabhängige Skalierung von logischen Komponenten

Eine Microservicearchitektur kann die erforderlichen Computeressourcen verringern, da sie die unabhängige Skalierung ihrer logischen Komponenten ermöglicht und gewährleistet, dass sie nach Bedarf skaliert werden.

  • Ziehen Sie den Einsatz von Dapr Framework oder anderer CNCF-Projekte in Betracht, um Ihre Anwendungsfunktionalität in verschiedene Microservices aufzuteilen und so eine unabhängige Skalierung der logischen Komponenten zu ermöglichen.

Entwurf für die ereignisgesteuerte Skalierung

Wenn Sie ihre Workload auf der Grundlage relevanter Geschäftsmetriken wie HTTP-Anfragen, Warteschlangenlänge und Cloudereignisse skalieren, kann das dazu beitragen, die Ressourcenverwendung und die CO2-Emissionen zu reduzieren.

  • Verwenden Sie Keda beim Erstellen von ereignisgesteuerten Anwendungen, um die Skalierung auf Null zu ermöglichen, wenn keine Nachfrage besteht.

Ziel für den zustandslosen Entwurf

Das Entfernen des Zustands aus Ihrem Entwurf reduziert die für den Betrieb der Workload erforderlichen Daten im Arbeitsspeicher oder auf den Datenträgern.

  • Erwägen Sie den zustandslosen Entwurf, um unnötige Netzwerklasten, Datenverarbeitung und Computeressourcen zu reduzieren.

Anwendungsplattform

Erkunden Sie diesen Abschnitt, um zu erfahren, wie Sie fundiertere plattformbezogene Entscheidungen bezüglich Nachhaltigkeit treffen.

Aktivieren von automatischen Cluster- und Knotenupdates

Ein aktueller Cluster vermeidet unnötige Leistungsprobleme und stellt sicher, dass Sie von den neuesten Leistungsverbesserungen und Computeoptimierungen profitieren.

Installieren von unterstützten Add-Ons und Erweiterungen

Add-Ons und Erweiterungen, die von der AKS-Supportrichtlinie abgedeckt werden, bieten weitere unterstützte Funktionen für Ihren Cluster und ermöglichen es Ihnen, über den gesamten Clusterlebenszyklus hinweg von den neuesten Leistungsverbesserungen und Energieoptimierungen zu profitieren.

Containerisieren Ihrer Workload, sofern möglich

Mithilfe von Containern können Sie unnötige Ressourcenzuweisungen reduzieren und die bereitgestellten Ressourcen besser nutzen, da sie das Bin-Packing ermöglichen und weniger Computeressourcen als virtuelle Computer erfordern.

  • Verwenden Sie Entwurf, um die Anwendungscontainerisierung durch Generieren von Dockerfiles und Kubernetes-Manifesten zu vereinfachen.

Verwenden von energieeffizienter Hardware

Die cloudnativen Prozessoren von Ampere sind einzigartig, und wurden entwickelt, um die Hochleistungs- und Energieeffizienzanforderungen der Cloud zu erfüllen.

Anpassen der Skalierbarkeitsanforderungen und Nutzen automatischer Skalierungs- und Burstingfunktionen

Ein überdimensionierter Cluster maximiert die Verwendung von Computeressourcen nicht und kann zu einer Verschwendung von Energie führen. Trennen Sie Ihre Anwendungen in verschiedene Knotenpools auf, um die Größenoptimierung und unabhängige Skalierung des Clusters entsprechend den Anwendungsanforderungen zu ermöglichen. Wenn die Kapazität Ihres AKS-Clusters erschöpft ist, wechseln Sie von AKS zu ACI, um zusätzliche Pods auf serverlose Knoten zu aufzuskalieren und sicherzustellen, dass Ihre Workload alle zugewiesenen Ressourcen effizient nutzt.

Deaktivieren von Workloads und Knotenpools außerhalb der Geschäftszeiten

Bestimmte Workloads müssen möglicherweise nicht ständig ausgeführt und können abgeschaltet werden, um die Energieverschwendung und die CO2-Emissionen zu verringern. Sie können Ihre Knotenpools in Ihrem AKS-Cluster vollständig deaktivieren (beenden), sodass Sie auch Computekosten sparen können.

Betriebsprozeduren

In diesem Abschnitt erfahren Sie, wie Sie Ihre Umgebung für die Messung und kontinuierliche Verbesserung der Kosten- und CO2-Effizienz Ihrer Workloads einrichten können.

Löschen nicht verwendeter Ressourcen

Sie sollten nicht verwendete Ressourcen, wie z. B. nicht referenzierte Images und Speicherressourcen, identifizieren und löschen, da sie sich direkt auf Hardware und Energieeffizienz auswirken. Sie sollten die Identifizierung und Löschung ungenutzter Ressourcen als Prozess und nicht als punktuelle Aktivität betrachten, um eine kontinuierliche Energieoptimierung zu gewährleisten.

  • Verwenden Sie Azure Advisor, um unausgelastete Ressourcen zu identifizieren.
  • Verwenden Sie ImageCleaner, um veraltete Images zu bereinigen und einen Risikobereich in Ihrem Cluster zu beseitigen.

Taggen Ihrer Ressourcen

Für die Erstellung von Berichten über Leistung und Ressourcenverwendung ist es wichtig, die richtigen Informationen und Erkenntnisse zum richtigen Zeitpunkt zu erhalten.

Storage

In diesem Abschnitt erfahren Sie, wie Sie eine nachhaltigere Datenspeicherarchitektur entwerfen und vorhandene Bereitstellungen optimieren können.

Optimieren der Speichernutzung

Die Datenabruf- und Datenspeichervorgänge können erhebliche Auswirkungen auf die Energie- und Hardwareeffizienz haben. Das Entwerfen von Lösungen mit dem richtigen Datenzugriffsmuster kann den Energieverbrauch und damit verbundenen CO2-Fußabdruck reduzieren.

Netzwerk und Konnektivität

In diesem Abschnitt erfahren Sie, wie Sie die Netzeffizienz verbessern und optimieren können, um unnötige CO2-Emissionen zu reduzieren.

Auswählen einer Region die den Benutzern möglichst nah ist

Der Abstand zwischen Rechenzentrum und Nutzern hat einen erheblichen Einfluss auf den Energieverbrauch und die CO2-Emissionen. Durch die Verkürzung der Entfernung, die ein Netzwerkpaket reist, wird sowohl Ihre Energieeffizienz als auch die CO2-Effizienz verbessert.

  • Überprüfen Sie Ihre Anwendungsanforderungen und Azure-Geografien, um eine Region auszuwählen, die dem Ziel der meisten Netzwerkpakete am nächsten liegt.

Reduzieren des Network Traversals zwischen Knoten

Die Platzierung von Knoten in einer einzigen Region oder einer einzigen Verfügbarkeitszone verringert die physische Entfernung zwischen den Instanzen. Für geschäftskritische Workloads müssen Sie jedoch sicherstellen, dass Ihr Cluster über mehrere Verfügbarkeitszonen verteilt ist, was zu einem größeren Network Traversal und einer Erhöhung Ihres CO2-Fußabdrucks führen kann.

Bewerten mithilfe eines Dienstnetzes

Ein Dienstnetz stellt zusätzliche Container für die Kommunikation bereit, in der Regel in einem Sidecar-Muster, um mehr operative Funktionen bereitzustellen, was zu einer Erhöhung der CPU-Auslastung und des Netzwerkdatenverkehrs beiträgt. Dennoch können Sie Ihre Anwendung von diesen Funktionen entkoppeln, da sie von der Anwendungsschicht auf die Infrastrukturebene verlagert werden.

  • Berücksichtigen Sie sorgfältig den durch die Kommunikationskomponenten des Dienstnetzes generierten Anstieg der CPU-Auslastung und des Netzwerkverkehrs, bevor Sie sich für den Einsatz einer solchen Komponente entscheiden.

Optimieren der Protokollsammlung

Das Senden und Speichern aller Protokolle aus allen möglichen Quellen (Workloads, Dienste, Diagnosen und Plattformaktivitäten) kann den Speicherbedarf und Netzwerkdatenverkehr steigern, was sich in höheren Kosten und CO2-Emissionen niederschlägt.

Zwischenspeichern statischer Daten

Die Verwendung von Content Delivery Network (CDN) ist ein nachhaltiger Ansatz zur Optimierung des Netzwerkverkehrs, da es die Datenverschiebungen in einem Netzwerk reduziert. Die Wartezeiten werden minimiert, indem häufig gelesene statische Daten näher beim Benutzern gespeichert werden, was dazu beiträgt, den Netzwerkverkehr und die Serverlast zu reduzieren.

Sicherheit

In diesem Abschnitt erfahren Sie mehr über die Empfehlungen, die zu einer nachhaltigen, angemessen dimensionierten Sicherheitsstrategie führen.

Bewerten, ob TLS-Abschluss verwendet werden soll

Über Transport Layer Security (TLS) wird sichergestellt, dass alle Daten privat und verschlüsselt zwischen dem Webserver und dem Webbrowser übertragen werden. Das Beenden und erneute Einrichten von TLS erhöht jedoch die CPU-Auslastung und kann in bestimmten Architekturen unnötig sein. Ein ausgewogenes Sicherheitsniveau kann eine nachhaltigere und energieeffizientere Workload bieten, während ein höheres Sicherheitsniveau die Computeressourcenanforderungen erhöhen kann.

  • Überprüfen Sie die Informationen zum TLS-Abschluss bei Verwendung von Application Gateway oder Azure Front Door. Bestimmen Sie, ob Sie TLS an Ihrem Border Gateway beenden und ohne TLS zu Ihrem Workload-Lastenausgleich und zu Ihrer Workload fortfahren.

Verwenden von cloudnativen Netzwerksicherheitstools und -kontrollen

Azure Font Door und Application Gateway helfen bei der Verwaltung des Datenverkehrs von Webanwendungen, während Azure Web Application Firewall Schutz vor den Top 10 der OWASP-Angriffe sowie Lastabschaltung bei bösartigen Bots am Netzwerkedge bietet. Diese Funktionen tragen dazu bei, unnötige Datenübertragungen zu vermeiden und die Belastung der Cloudinfrastruktur zu reduzieren, indem geringere Bandbreiten und weniger Infrastrukturanforderungen anfallen.

Überprüfen auf Sicherheitsrisiken

Viele Angriffe auf Cloudinfrastrukturen zielen darauf ab, die bereitgestellten Ressourcen zum direkten Vorteil des Angreifers zu missbrauchen, was zu einem unnötigen Anstieg der Verwendung und der Kosten führt. Tools zur Überprüfung auf Sicherheitsrisiken tragen dazu bei, das Zeitfenster für Angreifer zu minimieren und eine mögliche böswillige Nutzung von Ressourcen einzudämmen.

  • Befolgen Sie die Empfehlungen von Microsoft Defender for Cloud.
  • Führen Sie automatisierte Scantools für Sicherheitslücken aus, z. B. Defender for Containers, um unnötige Ressourcennutzung zu vermeiden. Diese Tools helfen, Sicherheitsrisiken in Ihren Images zu identifizieren und das Zeitfenster für Angreifer zu minimieren.

Nächste Schritte