Gute Software ist grün
Wie umweltbewusste Entwicklung zu besserer Software führt
von Yvonne Marneth, BSc
Nachhaltigkeit ist ein Wert, der in allen Lebensbereichen immer wichtiger wird, auch in der Welt der Software-Entwicklung. Die “grüne” Software-Entwicklung zeigt uns Strategien und Denkweisen, unsere Applikationen nicht nur umweltschonender, sondern gleichzeitig auch günstiger und robuster zu gestalten.
Inhalt
- Der Wunsch nach umweltverträglicher Software
- Die 8 Prinzipien des „Green Coding“
- Die Kosten grüner Software
- Autorin
Der Wunsch nach umweltverträglicher Software
Obwohl der Energieverbrauch im digitalen Bereich hauptsächlich durch den Einsatz von Hardware entsteht, wird dieser doch zu einem großen Teil von Software ausgelöst. Software nimmt also einen entscheidenden Einfluss auf deren Energieeffizienz. Eine umweltbewusste Einstellung bei der Entwicklung einer Applikation leistet einen bedeutenden Beitrag unsere Umwelt zu schützen. Grüne Software-Entwicklung möchte die Umweltbelastung in Form von Energieverbrauch, Treibhausgasemissionen und CO₂-Fußabdruck durch unsere Softwareprodukte minimieren, indem es nachhaltige Softwareentwicklungspraktiken, Architektur und Hardware in im Entwicklungsprozess einbringt.
Die Bereitschaft unsere Arbeit grüner zu gestalten ist oft da, doch welche konkreten Schritte können Entwickler tun, um ihre Applikationen bewusst nachhaltiger zu gestalten? Welche Kriterien machen eine Software umweltverträglich? Und sind diese überhaupt messbar?
Die 8 Prinzipien des „Green Coding“
Nachhaltigkeit in der Software-Entwicklung ist eigentlich kein neuer Gedanke. Der Fokus hat sich allerdings von den Bereichen Wirtschaftlichkeit und Änderungsfreundlichkeit nun ebenfalls auf den Bereich des Umweltschutzes ausgeweitet. Oft wird bei „Grüner Software“ zuerst an Software gedacht, deren primäre Aufgabe es ist, Prozesse im Sinne des Umweltschutzes zu verbessern. Dass auch die Architektur und der Entwicklungsprozess einer beliebigen Software nachhaltig sein kann, ist ein eher neuer Gedanke.
Seit 2021 beschäftigt sich die „Green Software Foundation“, eine Non-Profit-Organisation, damit unter anderem Netzwerke, Guides, Design Patterns und Werkzeuge zu erarbeiten, um nachhaltige Softwareentwicklung für Entwickler und Entwicklerinnen zugänglich zu machen. Ein Ergebnis dieser Bemühungen sind acht fundamentale Prinzipien für die Grüne Software-Entwicklung:
1) Carbon: Build applications that are carbon efficient
Treibhausgase tragen dazu bei, die Temperatur auf der Erde kontinuierlich zu erhöhen. Die Reduktion von Treibhausgasen ist also notwendig, auch wenn diese durch die Entwicklung und den Betrieb von Software verursacht werden. Software an sich bewirkt nur indirekt die Freisetzung von Treibhausgasen. Sie kann aber auch dazu verwendet werden, die Produktion von Treibhausgase in anderen Bereichen zu minimieren, zum Beispiel durch den Einsatz von Software zum Monitoring und Verbesserung von anderen Prozessen.
2) Electricity: Build applications that are energy efficient
Es gibt bereits vielversprechende mathematische Modelle, welche die Energieeffizienz verschiedener Funktionen in einer Applikation rechnerisch annähern und bereits recht gute Kennzahlen liefern. Auch der Einsatz von KI-basierten Systemen haben bereits gute Ergebnisse geliefert, um die Energieeffizienz von Software zu bewerten – wobei hier allerdings auch bemerkt werden muss, dass neuronale Netze selbst meist einen höheren Stromverbrauch verursachen als klassische Rechenmodelle. Es gibt bereits verschiedene Werkzeuge für Entwickler*innen, um die Energieeffizienz ihres Codes zu messen. Die Ergebnisse vieler Verfahren variieren jedoch stark, basierend darauf, wie, in welchen Zeiträumen und in welchem Kontext der Energieverbrauch betrachtet wird. Das macht es schwer, digitale Produkte untereinander zu vergleichen, sie können aber trotzdem gute Anhaltspunkte liefern, an welchen Stellen eine Applikation Verbesserungspotenziale hat.
3) Carbon Intensity: Consume electricity with the lowest carbon intensity
Strom in einem lokalen Netz setzt sich aus verschiedenen Quellen zusammen. Große Teile werden noch immer aus fossilen Brennstoffen gewonnen. Der Anteil, der durch erneuerbare Energiequellen erzeugt wird, hängt stark von der geographischen Lage und der dort vorherrschenden energiepolitischen Einstellung ab. Selten haben Einrichtungen großen Einfluss darauf, wie der Strom, den sie verbrauchen, erzeugt wird. Meist es nicht einmal klar nachvollziehbar. Diesem Problem kann man allerdings bereits gegensteuern, indem beim Betrieb einer Applikation Serverstandorte vermieden werden, bei denen bereits bekannt ist, dass große Teile des lokalen Netzes durch nicht-umweltfreundliche Quellen gespeist werden.
4) Embodied Carbon: Build applications that are hardware efficient
Ein ständiger Konflikt der Software-Entwicklung besteht in dem Drang, auf dem neuesten Stand der Technik zu bleiben. Die Umweltbelastung, die durch einen physischen Server entsteht, beschränkt sich jedoch nicht nur auf den Stromverbrauch während der Laufzeit, sondern kommt bereits bei der Herstellung eines Rechners, sowie später bei seiner Entsorgung zu tragen. Die Umweltbelastung durch seine Herstellung und Entsorgung kann dabei sogar höher ausfallen als durch die Energie, die während des Betriebs benötigt wird. Sinnvoll wäre es also, Server so lange wie möglich in Betrieb zu halten. Grundsätzlich nutzen sich Computer nicht ab, da sie keine beweglichen Teile haben. Trotzdem gibt es ein Verfallsdatum: Zum Beispiel, wenn sie modernen Workloads nicht mehr gewachsen sind, müssen sie ersetzt werden. Software, die mit älteren Geräten kompatibel ist, hilft dabei, das Leben von Hardware zu verlängern und dadurch ihre Umweltbelastung zu verringern.
5) Energy Proportionality: Maximise the energy efficiency of hardware
Gleichzeitig ist das Verhältnis zwischen der Auslastung und dem Energieverbrauch nicht proportional, auch weil ein laufender Computer immer einen bestimmten Grundverbrauch hat. Je besser ein Computer ausgelastet ist, desto energieeffizienter funktioniert das Gerät. Server können ihren Energieverbrauch bei geringer Last nur bedingt reduzieren, sodass sie sofort auf Anfragen reagieren können, wenn diese gemacht werden. Durch laufende Server-Skalierung kann in Zeiten niedriger Auslastung Energie gespart werden, indem die Software auf weniger physischen Maschinen betrieben wird. Auch die “Serverless”-Architektur hilft dabei, den Stromverbrauch in Ruhezeiten minimal zu halten.
6) Networking: Reduce the amount of data and distance it must travel across the network
Eine eher unsichtbare Umweltbelastung besteht im Internet selbst. Das Internet besteht aus einem weltweiten Netzwerk von Geräten, welche zusätzliche Energie verbrauchen. Jede Anfrage über das Internet verursacht Energieverbrauch. Wie groß dieser ist, hängt vor allem von der Distanz zwischen Client und Server ab, wie viele Netzwerkgeräte die Anfrage weiterleiten müssen, wie diese betrieben werden etc. – aber auch von dem verwendeten Protokoll.
Eine ressourceneffiziente Software sollte also unnötigen Datentransfer vermeiden, sowie die passenden Protokolle wählen, um Daten möglichst effizient zu übertragen.
7) Demand Shaping: Build carbon-aware applications
Demand Shaping beschäftigt sich mit der Praxis den Service, bzw. die Qualität des Service umgekehrt an die Nachfrage anzupassen. Video Conferencing Software beispielsweise reduziert die Videoqualität und priorisiert Audioübertragung zu Zeiten hoher Auslastung. Diese Methodik kann verwendet werden, um Applikationen umweltfreundlicher zu gestalten.
So kann die User-Experience angepasst werden, wenn die Kosten des Betriebs zu hoch werden. Da es hier bisweilen zu Kosten in der Verwendbarkeit kommt, kann ein „Eco-Mode“ auch als bewusste Entscheidung während der Verwendung angeboten werden.
8) Measurement & Optimisation: Focus on step-by-step optimisations that increase the overall carbon efficiency
Es ist nicht notwendig, alle Eventualitäten aus dem Vorhinein abzuwägen. Einzelne bewusste Entscheidungen können bereits einen großen Unterschied machen. Wichtig ist es vor allem, Entwicklungen zu beobachten und kontinuierlich Schritt für Schritt Verbesserungen einzubringen. Diese Vorgehensweise ist nicht nur im Sinne der Nachhaltigkeit, sondern sorgt gleichzeitig auch für eine anpassungsfähige Software mit einer proaktiven Wartung.
Die Kosten grünerer Software
Wer eine umweltfreundliche Software möchte, muss bei ihrer Entwicklung viele Parameter im Blick behalten und sich Gedanken über Möglichkeiten und Trade-offs machen. Ein großer Faktor bei diesen Entscheidungen spielt auch die Frage nach den Kosten dieser Veränderungen. Tatsächlich decken sich viele der Merkmale einer umweltschonenden Software aber mit denen einer qualitativ hochwertigen und im Betrieb sehr günstigen Software.
Dadurch, dass bewusst Ressourcen eingespart und achtsam eingesetzt werden, können die Betriebskosten gesenkt werden. Da potenziell weniger physische Server, Arbeitsspeicher und Rechenleistung benötigt werden. Die Benutzererfahrung muss unter solchen Einsparungen meist nicht leiden – im Gegenteil. Eine effiziente Software ist für gewöhnlich schneller, zuverlässiger und belastet die Geräte der Nutzenden weniger. Die Priorisierung von Ressourceneffizienz lenkt den Fokus zurück auf die Kernfunktionalität eines Produkts und so zu Verbesserungen im UX Design führen, indem überflüssige Elemente identifiziert und eliminiert werden.
Der bewusste Umgang mit Ressourcen und deren Monitoring führt zu einer zuverlässigen, sicheren, langlebigen und anpassungsfähigen Software. Die leicht höheren Kosten, die bei der initialen Entwicklung der Applikation möglicherweise anfallen, können also als Investition in eine zukunftsstarke Software betrachtet werden.
Die RISC Software GmbH unterstützt Sie gerne bei der Entwicklung umweltfreundlicher Software und bringt ihre Expertise ein.
Kontakt
Autorin
Yvonne Marneth, BSc
Software Developer