Die Senkung des Energieverbrauchs ist das Kernelement der nachhaltigen Software-Architektur. Markus Eisele, Developer Strategist EMEA bei Red Hat, nennt fünf Bereiche, in denen Entscheidungen bezüglich des Designs einen Unterschied machen können. [...]
Auch Software-Architekturen haben Auswirkungen auf die globale Erwärmung und den Klimawandel. Die Frage, die sich in der heutigen Zeit stellt, lautet: Wie kann man bessere und nachhaltigere Lösungen konzipieren? Es gibt dabei fünf Bereiche, die bei der Entwicklung von Anwendungen im Hinblick auf Nachhaltigkeit zu berücksichtigen sind. Dabei geht es um die Daten, die Applikation, die Plattform, den Code und den Betrieb.
Die fünf Segmente mit konkreten Handlungsempfehlungen im Überblick:
1. Datendesign, -nutzung und -speicherung
In einem ersten Schritt sollten Unternehmen die Datenspeicherung und -nutzung auf ein absolutes Minimum reduzieren. Hilfreich ist hierbei die Einführung von Richtlinien für die Datenklassifizierung, etwa mit der Festlegung, welche Daten wie lange gespeichert werden. Unnötige Daten sollten immer unter Einhaltung regulatorischer Bestimmungen gelöscht werden. Auch eine Überprovisionierung an Speicherplatz und Datenbewegungen über Netzwerkgrenzen hinweg sind möglichst zu vermeiden. Nicht zuletzt ist auch die Nutzung von Datenzugriffstechnologien sinnvoll, die einen standortbezogenen Datenabruf unterstützen.
2. Anwendungsdesign
Hinsichtlich des Anwendungsdesigns muss klar sein, dass ein „Always on“-Ansatz unnötig viel Energie verbraucht und meistens überflüssig ist. Ressourcen sollten auch für eine parallele und asynchrone Verarbeitung nutzbar sein. So können nicht zeitkritische Aufgaben aufgeteilt und dann asynchron bearbeitet werden, etwa in einer Zeit, in der umweltfreundlicher Strom zur Verfügung steht. Hilfreich ist zudem ein Application-Monitoring, um Runtime-Veränderungen und -Auswirkungen auf die Nachhaltigkeit zu verfolgen. Eventuell kann auch die Nutzung nachhaltig betriebener Managed Services in Betracht gezogen werden.
3. Plattformbereitstellung, -nutzung und -skalierung
Eine hohe Komplexität weist das Thema Plattformbereitstellung, -nutzung und -skalierung auf, da es hier auch um spezifische Architektur-Entscheidungen geht. Bei den Technologien, die auf die Nutzung und Skalierung abzielen, kommen etwa Knative und Serverless ins Spiel. Hinsichtlich Kubernetes-Umgebungen ist festzuhalten, dass sie häufig nach dem Prinzip „ein Cluster pro App“ konzipiert werden, manchmal aber auch nach dem Muster „mehrere Cluster (Staging/Prod/Dev) pro App“. Die Auslastung in diesen Clustern ist gering. Das heißt, selbst wenn ein Pod auf null skaliert, haben Unternehmen immer noch einen Overhead an Kubernetes inklusive CO2-Fußabdruck der Hardware. Zwar ist der Stromverbrauch des Workloads geringer, die Verbesserung der Klimabilanz ist jedoch marginal. Unternehmen müssen deshalb auf jeden Fall ihre Gesamtkonfiguration betrachten, bevor sie zusätzliche Technologien für eine Anwendung nutzen. Idealerweise kommt dabei für das Entwickeln und Testen einer Applikation eine minimale, funktionsfähige und repräsentative Umgebung zum Einsatz.
4. Code-Effizienz
„Der effizienteste Code ist kein Code und der beste Zeitpunkt, um unnötige Workloads zu erkennen, ist so früh wie möglich im Designprozess“, erklärt die Green Software Foundation. Unternehmen, die Ziele und Anforderungen im Vorfeld definieren, können bereits viel erreichen. Eine Änderung der Aufbewahrungszeit von Protokolldateien oder die Anpassung der Service Level Agreements (SLAs) an den tatsächlichen Bedarf sind dafür nur zwei Beispiele.
5. Betrieb
Beim Betrieb bietet die hohe Rechendichte von Managed Cloud Services entscheidende Vorteile. Solche Services teilen die Ressourcen unter Tausenden oder sogar Millionen von Nutzern, wodurch eine extrem hohe Auslastung erreicht wird und der Aufwand für SRE (Site Reliability Engineering)-Teams verringert wird, die sich um den Betrieb von Infrastruktur und Anwendungen kümmern. Darüber hinaus gibt es immer mehr Open-Source-Projekte, die Unternehmen beim Erreichen ihrer Nachhaltigkeitsziele unterstützen. Dazu zählen etwa das Kubernetes-Add-on Kube-green, das Ressourcen bei Nichtnutzung automatisch herunterfährt, oder das Tool Cloud Carbon Footprint, das den Energieverbrauch und die CO2-Emissionen bei der Public-Cloud-Nutzung schätzt. Zu nennen ist auch das Projekt Kepler (Kubernetes Efficient Power Level Exporter), das eBPF (extended Berkeley Packet Filter) verwendet, um energiebezogene Systemstatistiken zu ermitteln und als Prometheus-Metriken zu exportieren.
Die empfohlenen Maßnahmen in den fünf unterschiedlichen Bereichen zielen primär auf die Anwendung in ereignisgesteuerten oder Microservices-Architekturen ab. Eines sollte dabei klar sein: Jede Maßnahme kann nur dann den gewünschten Erfolg bringen, wenn ein Unternehmen vorab die Ziele definiert und die Zielerreichung mittels sinnvoller Messmetriken dann auch überprüft.
*Markus Eisele ist Developer Strategist EMEA bei Red Hat.
Be the first to comment