Nachhaltigkeit auf struktureller und konzeptioneller Ebene 6 Empfehlungen für „grüne“ Software-Architekturen

Ein Gastbeitrag von Yelle Lieder* 3 min Lesedauer

Anbieter zum Thema

Guidelines und Kriterienkataloge für nachhaltige Software wecken häufig den Eindruck, dass über die Nachhaltigkeit primär im Programmcode entschieden wird. Doch das Coding ist nur eine von vielen Aktivitäten im Software Engineering.

Wer eine nachhaltigere Software-Architektur nutzen will, muss früh im Engineering-Prozess ein paar grundlegende Entscheidungen zur Struktur und Konzeption terffen.
Wer eine nachhaltigere Software-Architektur nutzen will, muss früh im Engineering-Prozess ein paar grundlegende Entscheidungen zur Struktur und Konzeption terffen.
(Bild: FrankBoston - stock.adobe.com)

Der Einfluss der auf Quellcode-Ebene getroffenen Entscheidungen für die Nachhaltigkeit ist oft begrenzt im Vergleich zu den großen strukturellen Entscheidungen auf Systemebene. Dieser Beitrag zeigt daher, wie Nachhaltigkeit bereits auf struktureller und konzeptioneller Ebene von Software integriert werden kann.

Monitoring und Benchmarking

Zunächst sollten Software-Architekturen ein kontinuierliches Monitoring ihres Ressourcenverbrauchs integrieren. Dieser fortlaufende Prozess des Messens sollte als fester Bestandteil der Architektur betrachtet werden, um zuverlässige und konsistente Ergebnisse sicherzustellen.

Die gesammelten Messdaten sollten genutzt werden, um die Umweltauswirkungen über verschiedene Softwareversionen hinweg zu verfolgen und zu steuern. Eine frühzeitige Überwachung und Dokumentation der Umweltauswirkungen ermöglicht eine belastbare Bewertungen und Minimierung der ökologischen Lebenszykluskosten.

Load Shifting nicht zeitkritischer Workloads

Um umweltfreundliche Software-Architekturen zu gestalten, empfiehlt es sich außerdem, nicht zeitkritische Prozesse separat zu behandeln und asynchron auszuführen. Indem Aufgaben wie Backups oder Synchronisationen - allgemein Batch-Jobs - extrahiert werden, kann die Ausführung von Workloads an die Verfügbarkeit erneuerbarer Energien angepasst werden.

Abbildung 1:   <A target="_blank" HREF="https://www.carbon-aware-computing.com/"><u>Skizzierte Funktionsweise des Time-Shifitng</u></A>
Abbildung 1: Skizzierte Funktionsweise des Time-Shifitng
(Bild: Aydin Mir Mohammadi,)

In der Praxis lässt sich aufgrund der fluktuierenden Einspeisung erneuerbarer Energien ins Netz der Footprint von Workloads um bis zu 30 Prozent reduzieren. Das Konzept ist in Abbildung 1 etwas anschaulicher verbildlicht.

Modularität und Elastizität

Weiterhin ist es ratsam, auf Modularität und elastische Skalierungsmöglichkeiten zu setzen. Diese ermöglichen es, Leerlaufzeiten zu reduzieren und ungenutzte Ressourcen freizugeben, indem einzelne Dienste dynamisch angepasst werden können. Dadurch kann die Infrastrukturauslastung optimiert und der Bedarf an Hardware insgesamt verringert werden.

Es ist allerdings wichtig zu bedenken, dass modulare, verteilte Systeme auch Nachteile in Bezug auf Ressourceneffizienz haben können. Beispielsweise kann die Nutzung von Microservices im Vergleich zu monolithischen Systemen zusätzlichen Overhead durch mehr Dienste, Netzwerkdatenverarbeitung und verteilte Transaktionen verursachen. Nicht jede Anwendung erfordert eine so feingranulare Skalierbarkeit, und in manchen Fällen kann eine solche Architektur sogar ineffizient sein.

Es ist daher entscheidend, die verschiedenen Trade-Offs zu berücksichtigen und nicht ausschließlich auf maximale Skalierbarkeit zu setzen. Dennoch zeigen Erfahrungen, dass viele Unternehmen durch die Einführung von Modularität ihre IT-Nachhaltigkeitsziele verbessern können.

Batch I/O Operationen bündeln

Die Bündelung von Input- und Output-Operationen trägt dazu bei, den Overhead pro Operation zu minimieren. Die Herstellung von Verbindungen für Datenübertragungen verbraucht in den meisten Fällen eine beträchtliche Menge an Ressourcen.

Abbildung 2: Netzwerkpaket-Energieverbrauch nach Li und Halfond 2014
Abbildung 2: Netzwerkpaket-Energieverbrauch nach Li und Halfond 2014
(Bild: Adesso SE)

Abbildung 2 verdeutlicht dies anhand des Overhead von http-Headern: Man beachte die logarithmische Skala!

Durch die Bündelung von Daten vor der Übertragung wird dieser Overhead reduziert, was zu einer effizienteren Nutzung von Ressourcen führt. Dies gilt sowohl für die Kommunikation zwischen verschiedenen Systemen als auch für den Zugriff auf lokale Datenspeicher.

Offloading-Entscheidungen

Die Balance zwischen dem Ressourcenverbrauch für die Datenübertragung sowie Hardware-Effizienz muss in nachhaltigen Software-Architekturen explizit gemacht werden. Dabei wird nicht nur die Effizienz der Zielhardware berücksichtigt, sondern auch die Belastung durch die Datenübertragung.

Oft werden Berechnungen von Client-Geräten wie Smartphones an Server in Cloud-Rechenzentren ausgelagert, da diese nach eigenen Angaben aufgrund ihrer höheren Energie-Effizienz weniger Energie verbrauchen. Jedoch kann es in Fällen, in denen der Stromverbrauch für die Datenübertragung höher ist als das Einsparungspotenzial während der Berechnung sinnvoll sein, die Berechnungen näher am Speicherort der Daten auszuführen, selbst wenn die vorhandene Hardware weniger effizient ist.

Speicheroptimierung

Nachhaltige Software-Architekturen optimieren letztlich auch die Speichernutzung, indem sie nur unverzichtbare Daten speichern, zustandslose Systeme verwenden und Daten komprimieren. Diese Speicherregeln werden bereits in der Architekturdefinition festgelegt, um festzulegen, welche Daten unter welchen Bedingungen und für wie lange gespeichert werden sollen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Dies umfasst auch die Unterscheidung zwischen hot- und cold Storage, basierend auf der Datenabrufhäufigkeit. Zusätzlich werden Mechanismen geplant, um Daten vor der Speicherung oder Übertragung zu komprimieren, wobei potenzielle Zielkonflikte zwischen Speicher- und Rechenleistung berücksichtigt werden müssen.

Zusammenfassung

Nachhaltige Software lässt sich also nicht nur durch die reine Programmierung oder das Betriebsmodell beeinflussen. Im Artikel wurden viele unterschiedliche Entscheidungen vorgestellt, die den Ressourcenverbrauch von Systemen reduzieren.

Wichtig ist, dass diese Entscheidungen nicht zwingend mit zusätzlichen Aufwänden verbunden sind. Vielmehr handelt es sich um Alternativvorschläge für Entscheidungen, die ohnehin getroffen und umgesetzt werden müssen. Nachhaltige Software ist also nicht immer teurer, häufig sind es die grundlegenden Entscheidungen, die sie ausmachen.

* Über der Autor
Yelle Lieder ist Green IT Lead bei Adesso. Als Mitglied des CIO Advisory Competence Center konzentriert er sich auf Strategien zur Messung und Reduzierung der Umweltauswirkungen von IT-Systemen sowie auf den Einsatz von Technologie zur Erreichung von Nachhaltigkeitszielen.

Bildquelle: Adesso SE

(ID:49996725)