Green IT 08.08.2023, 08:00 Uhr

Nachhaltig Programmieren: Wie effektives Green Coding funktioniert

Nachhaltige Softwareentwicklung dank Green Coding: So sparen Entwickler Strom.
(Quelle: dotnetpro)
Die Nutzung digitaler Dienste wächst und wächst – und damit der dafür benötigte Energieverbrauch. Bis zu zwölf Prozent des globalen Strombedarfs fließen heute in digitale Geräte – Tendenz steigend, wie der Deutschlandfunk Ende des letzten Jahres berichtete.
Auch wenn digitale Technologien das Potenzial haben, Kohlenstoffdioxid einzusparen – verbrauchen sie allerdings selbst beträchtliche Mengen Energie. So wird geschätzt, dass die Digitalisierung circa so viel CO2 verursacht wie der gesamte Flug- und Zugverkehr sowie die gesamte Schifffahrt pro Jahr. Dies entspricht zwei Prozent bis vier Prozent der globalen Treibhausgasemission, was für das Jahr 2021 eine Emission von 740 Millionen bis zu 1.400 Millionen Tonnen CO2 bedeutet. Zum Vergleich: Deutschland hat im selben Jahr eine Emission von 760 Millionen Tonnen CO2 verursacht. Deshalb ist es wichtig, Maßnahmen zu etablieren, um den Energieverbrauch effektiv zu senken.
Einen vielversprechenden Ansatz bietet das sogenannte Green Coding, bei dem Entwickler:innen an energieeffizienteren Algorithmen arbeiten und den Code optimieren, um Ressourcen zu sparen und die Leistungsfähigkeit von Anwendungen zu verbessern. Green Coding ist ein weit gefasster Begriff und beinhaltet verschiedene Schritte der Softwareentwicklung.
Auch die Messung des Stromverbrauchs gehört dazu: So werden Tools entwickelt, um den Energieverbrauch von Anwendungen detailliert in verschiedenen Szenarien zu analysieren. Auch das Nutzen von erneuerbaren Energien in Rechenzentren gehört dazu, so haben zahlreiche Unternehmen auf Solarenergie oder Windkraft zur Versorgung ihrer Serverfarmen umgestellt oder Virtualisierungstechnologien genutzt, um die Auslastung von Servern zu optimieren.

Green Coding: Ein Begriff, viele Facetten

Green Coding beschreibt als Teilbereich von Green IT die nachhaltige Entwicklung und den Betrieb von Software, also stellt u. a. die Frage, was Entwickler:innen tun können, um eine nachhaltige IT-Landschaft zu schaffen. Für das Implementieren von Green IT ist es zentral, bei Entwickler:innen und C-Levels gleichermaßen das Bewusstsein zu schaffen, dass jede einzelne Zeile Code, die geschrieben und später ausgeführt wird, Energie verbraucht. Daher macht es mit Blick auf Umweltbewusstsein und Effizienz Sinn, bei Software ein Augenmerk darauf zu richten, wie Code geschrieben, gewartet, gehostet und ausgeführt wird. Dazu braucht es Transparenz, beispielsweise durch gezieltes Monitoring relevanter Parameter, wie die Auslastung der Einzelsysteme, den Energieverbrauch bei bestimmten Prozessen, die Häufigkeit der Ausführung und der Datendurchsatz pro Aufruf, als Basis fundierter Entscheidungen.

Anpassung der Anwendungsarchitektur

Eine saubere Anwendungsarchitektur, welche sich beispielsweise an den Wertströmen des Unternehmens orientiert, gepaart mit sauberen Schnittstellen, skalierbaren Komponenten und intelligentem Caching statischer Daten, senkt nicht nur den Energieverbrauch zur Laufzeit, sondern bietet auch zukünftigen Innovationen genügend Raum, um effizient in das System integriert zu werden. Durch diese gezielten architektonischen Anpassungen können grüne Prinzipien fest im Fundament der Anwendung verankert werden.

Umsetzung der Green Coding Principles gemäß der Green Software Foundation

Um energieeffizient zu coden, braucht es effiziente Algorithmen und Technologien. Daher sollten Anwendungen auf das Wesentliche reduziert werden – und Entwickler:innen bei den eingesetzten Technologien und Programmiersprachen stets bewusste Entscheidungen treffen. Die Green Coding Principles der Green Software Foundation bieten dabei eine wertvolle Richtlinie für nachhaltige Softwareentwicklung.

Optimierung der Infrastruktur & Kommunikation

Hier stehen das Skalieren und Auslasten der Hardware im Fokus. Ziel ist es, die Auslastung der einzelnen Server zu maximieren und den Netzwerk-Verkehr zu minimieren. Zudem sollten Systeme, wie Microservice-Architekturen, dynamisch so skaliert werden, dass der aktuelle Bedarf anhand des SLA bedient werden kann. Durch die Verkürzung der Wege von Anwender:innen zum Server und die Reduzierung des Datenverkehrs kann der Energieverbrauch von Software reduziert werden.
Dies kann durch verschiedene Maßnahmen erreicht werden, wie die Verwendung eines Loadbalancers, eines Content Delivery Networks (CDN) und Konfigurationen in den Endanwendungen. Zusätzlich kann man die Anfragen der Frontend-Applikation an Orte auf der Welt leiten, an denen der Strommix am grünsten ist. Und schließlich lässt sich durch Caching statischer Daten vermeiden, dass immer wieder auf Live-Daten zugegriffen wird. Die gezielte Verteilung der Kontenpunkte auf Basis der zu erwartenden Lastspitzen in den unterschiedlichen Märkten kann ebenfalls dazu beitragen, den Energieverbrauch zu optimieren.

Einsatz geeigneter Programmiersprachen und Technologien

Die Programmiersprache hat ebenfalls einen erheblichen Einfluss darauf, wie energieeffizient eine Anwendung ist. Um die richtige Sprache auszuwählen, ist es wichtig, die Vor- und Nachteile sowie die Effizienz bestimmter Programmiersprachen in der Laufzeitumgebung genau zu kennen, um sie optimal einzusetzen. So kann der Energieverbrauch beispielsweise in E-Commerce-Backendsystemen durch den Einsatz optimierter Sprachen wie Java oder C# im Vergleich zu PHP teils dramatisch gesenkt werden.

Eine optimale User Experience schaffen

Wichtig ist zudem eine einfache und saubere User Experience und ein User Interface, das mit wenigen Navigationsschritten auskommt und zusätzlich Raum für neue Funktionen bietet. Dadurch verringert sich einerseits der Netzwerkverkehr sowie die Systemlast und minimiert andererseits den Energieverbrauch der beteiligten System. Zusätzlich lässt sich eine solche Applikation leichter um neue Funktionen erweitern, wodurch sich ebenfalls der Lebenszyklus deutlich verlängern lässt. Eine grüne User Experience, die Nutzer:innen auf effiziente und ressourcenschonende Weise mit der Software interagieren lässt, stellt somit einen wichtigen Aspekt des Green Codings dar.

Die Entwicklung von Green Coding

Green Coding ist in deutschen Unternehmen noch keine Selbstverständlichkeit, die Entwicklung schreitet zwar voran, steckt aber in einigen Bereichen noch in den Kinderschuhen. Auch wenn Software als Grundlage des Internets sowie digitaler Dienste einen erheblichen Einfluss auf den Energieverbrauch, die Energieeffizienz und die Nutzungsdauer von Hardware hat, gibt es noch keine gesetzlichen Regelungen zur Energieeffizienz, weder in Deutschland, noch auf europäischer Ebene. Doch erste Schritte werden gemacht, wie beispielsweise in Deutschland mit dem "Blauen Engel für ressourcen- und energieeffiziente Softwareprodukte". Diese freiwillige Zertifizierung bestätigt u. a., dass Softwareprodukte sowohl ressourcenschonend und energieeffizient sind als auch auf älterer Hardware laufen und langfristig aktualisiert werden können. 

Vorbild USA? Tech-Giganten sind auf einem guten Weg

In Sachen Nachhaltigkeit können sich einige deutsche Unternehmen etwas von den Tech-Giganten abschauen. Ob Google, Apple oder Microsoft: Sie alle haben Green Principles bereits in ihre Arbeit integriert und punkten gerade durch die hohe technische Expertise, die wiederum zu einer hohen Effizienz führt.
Beim Umsetzen einer Grünen IT lässt sich in Deutschland eine Entwicklung in Wellen beobachten. Das hat auch mit der technischen Entwicklung zu tun: Früher mussten Entwickler:innen mit wesentlich weniger Rechenpower auskommen, dementsprechend war effizientes Programmieren quasi Pflicht. Je weiter die Rechenpower von Endgeräten und der Einsatz von Clouds und Hyperscalern wuchs, umso mehr rückte eine effiziente Programmierung in den Hintergrund, Aspekte wie Zuverlässigkeit und Sicherheit zu möglichst geringen Kosten wurden wichtiger. Das heißt jedoch nicht, dass Prinzipien des Green Codings per se nicht angewendet werden: Qualifizierte Software-Entwickler:innen achten ohnehin auf kompakten, effizienten, sauber geschriebenen und somit ressourcenschonenden Clean Code.
Zur umfassenden Umsetzung von Green Coding im Unternehmen ist es allerdings wichtig, dass die Verantwortung nicht völlig an die Cloud-Anbieter abgegeben wird, die z. T. ja mit grüner Energie betrieben werden, sondern dass trotzdem auf die Energieeffizienz jeder einzelnen Anwendung geachtet wird. Ein "Rebound Effekt", also, dass Anwender:innen bei Effizienzsteigerungen von einer Ressource anschließend mehr Nutzen und somit die Effizienzsteigerung aufheben, kann zwar durch bewusste Entscheidungen der Nutzer:innen vermieden werden. Die Verantwortung liegt jedoch nicht direkt bei den Anwender:innen, sondern bei den Architekt:innen. Diese dürfen ihre ehemaligen On-Premise-Systeme nicht eins zu eins in die Cloud migrieren, sondern müssen bei diesem Schritt auch jede Komponente bewusst auf ihre Zukunftsfähigkeit hin untersuchen. In vielen Fällen lassen sich hierbei weitere Potentiale identifizieren.

Was macht grünen Code aus?

Aktuell ist Green Coding noch kein fester Bestandteil des Lehrplanes von Informatiker:innen. Allerdings ist das Know-how oft schon vorhanden, wenn auch unbewusst: Denn gute Programmierer:innen schreiben effizienten, prägnanten und gut wartbaren Code. Ineffizienzen, wie das Programmieren von geschachtelten Schleifen, sollten ohnehin vermieden werden – diese treiben auch den Energieverbrauch unnötig in die Höhe. Wichtig ist das Bewusstsein:  Jeder Block Code und jedes Ausführen davon verbraucht wertvolle Ressourcen. Daher sollte darauf geachtet werden, nicht sinnfrei bestehenden Code oder bestehende Funktionen zu reproduzieren, sondern stets zu hinterfragen, ob dies die bestmögliche Option ist, diese Funktion zu schreiben – und bei Ineffizienzen zu überarbeiten.

Wie sieht effizienter Code konkret aus?

Wichtig für das Erstellen von effizientem Code ist das Verwenden von geeigneten Algorithmen für das jeweilige Problem. Oftmals können effiziente Algorithmen den Unterschied zwischen einer langsamen, ressourcenhungrigen und einer schnellen, ressourceneffizienten Lösung machen.
Zudem sollte redundanter Code vermieden werden. Stattdessen sollten Funktionen oder Klassen erstellt werden, die wiederverwendet werden können. Darüber hinaus ist es wichtig, geeignete Datenstrukturen für die jeweiligen Aufgaben zu verwenden, denn Arrays, Listen, Sets, Maps usw. können je nach Anforderungen unterschiedliche Auswirkungen auf die Leistung und damit den Energieverbrauch haben.
Entwickler:innen sollten ein Cache-Bewusstsein entwickeln, um auf Daten effizient zuzugreifen. So sollte beispielsweise auf Daten in einem zusammenhängenden Bereich zugegriffen werden, um die Cache-Nutzung zu verbessern. Auch  jeder Zugriff auf die Datenbank oder das Dateisystem ist zeitaufwändig, weswegen diese Zugriffe minimiert werden sollten, indem Daten lokal gespeichert oder Caching-Techniken verwendet werden.
Beim Speichern wiederum sollte die minimal benötigte Datenmenge verwendet werden, um Speicherplatz zu sparen. Dies ist besonders wichtig bei großen Datenstrukturen oder Anwendungen mit begrenztem Speicher. Last but not least sollten unnötige Variablen vermieden werden, da diese zusätzlichen Speicherplatz und Rechenzeit benötigen.

Green Coding in der Praxis: Wie grüne Programmierung im e-Commerce gelingt

Wie kann dies am Beispiel von e-Commerce-Websites aussehen? Große Shops verfügen oftmals über einen besonders hohen Traffic, weshalb die Umsetzung grüner Prinzipien hier einen besonders hohen Impact hat. Dies ist ein Grund, dass beispielsweise große Webshops wie Amazon auch als Cloud-Anbieter agieren und sich so selbst um ihre Ressourcen kümmern.
Die Effizienz von e-Commerce-Websites lässt sich auf verschiedene Weise deutlich steigern. Zunächst ist es wichtig, die Website-Geschwindigkeit zu optimieren, da eine langsame Seite nicht nur zu einer schlechten Benutzererfahrung führt, sondern auch den Stromverbrauch erhöht. Durch Maßnahmen wie die Optimierung von Bildern, die Minimierung von CSS- und JavaScript-Dateien sowie den Einsatz von Caching-Techniken kann die Ladezeit erheblich verkürzt werden. Darüber hinaus ist die Reduzierung der Datenübertragung entscheidend, um den Stromverbrauch zu verringern. Die Komprimierung von Dateien und der Einsatz effizienter Datenformate wie WebP für Bilder können hierbei hilfreich sein.
Ein weiterer Ansatz zur Steigerung der Effizienz ist die Optimierung der Navigation auf der Website. Hierbei sollte darauf geachtet werden, Inhalte je nach aktueller Umgebung, wie Jahreszeit, Wetter oder Events, leicht und prominent zu platzieren. Zudem sollten typische Anwendungsfälle wie die Suche oder der Bezahlvorgang mit möglichst wenigen Klicks abgebildet werden, um die Anzahl der Serveranfragen zu verringern. Die gezielte Verwendung von Cookies ermöglicht es, Nutzer:innen wiederzuerkennen und gezielt mit Inhalten zu bespielen.
Bei der technischen Infrastruktur ist es empfehlenswert, skalierbare Serverarchitekturen zu verwenden und virtuelle Maschinen oder Container einzusetzen, um die Lastverteilung zu optimieren. Des Weiteren sollte auf "sinnloses Recycling" von Code-Zeilen verzichtet werden, indem Programmierer:innen Komponenten oder Frameworks nicht einfach aus Kostengründen übernehmen, sondern stets den Einsatzzweck überprüfen.
Im Fokus steht auch die Effizienz bei der Nutzung moderner Architekturen wie Microservices. Entwickler:innen sollten sich fragen, wie oft einzelne Microservices bei einer Anfrage aufgerufen werden und ob es logische Zusammenhänge gibt, die häufig gemeinsam aufgerufen werden können. Dadurch kann der Energieverbrauch bei ständigen Aufrufen von Systemen erheblich reduziert werden. Allerdings sollten sehr komplexe Architekturen vermieden werden, und es kann sinnvoll sein, dedizierte Backends für bestimmte Anwendungsfälle einzusetzen.
Auch der Einsatz zeitgemäßer Software ist von Bedeutung. Alte, kaum wartbare Monolithen sind nicht effizient und können Innovationen einschränken. Daher ist es ratsam, Altlasten aufzubrechen und neue Systeme einzuführen. Zudem sollte die Komplexität von IT-Systemen reduziert werden, indem IT-Fachkräfte Tools verwenden, die effektives Monitoring durch übersichtliche Dashboards ermöglichen.
Ein weiterer Aspekt betrifft die Architekturen, die sich am Wertstrom (Business Value) orientieren und das Domain Driven Design (DDD) nutzen. Ziel ist es, die Softwarearchitektur um die Geschäftslogik und Fachlichkeit der Anwendung herum zu organisieren, um den tatsächlichen Geschäftsanforderungen gerecht zu werden.
Eine einfache Maßnahme, um Energie zu sparen, besteht darin, laufende Systeme, die nicht gebraucht werden, herunterzufahren. Hyperscaler setzen dies bereits häufig bei Shopsystemen um, indem sie entsprechend der Auslastung skalieren.
Neben den technischen Optimierungen ist auch die kontinuierliche Schulung der Entwickler:innen entscheidend. Nur durch ein breites Wissen über verschiedene Programmiersprachen und -Tools können sie die effizienteste Lösung für jedes Problem finden. Eine kontinuierliche Weiterbildung erweitert das Spektrum an verfügbaren Möglichkeiten und trägt dazu bei, die Effizienz weiter zu steigern. Mit diesen vielfältigen Ansätzen können e-Commerce-Websites energieeffizienter und umweltfreundlicher gestaltet werden.

Wie grün sind besonders innovative Technologien?

Und wie sieht es abseits der relativ gängigen Technologien und Anwendungen aus, also bei als besonders innovativ geltenden Technologien, wie AI und Blockchain?
Gerade AI und Blockchain gelten als besondere Energiefresser, sei es aufgrund der aufwändigen Trainings mit großen Datenmengen für KI oder besonders komplexer Rechenoperationen bei der Blockchain. Doch per se abgelehnt werden sollten diese auch bei Green IT nicht: Beim Einsatz kommt es vor allem auf die Einsparungen an, die durch den Einsatz erzielt werden können und das Energieaufwand und Einsparungen in einer sinnvollen Relation zueinander stehen. Wenn beispielsweise Daten zur Optimierung des Stromnetzes eingesetzt werden und nachher kontinuierlich dreißig Prozent Energie eingespart werden, kann dies durchaus lohnend sein.

Der Fokus auf mehr Effizienz lohnt sich

In Deutschland ist ein Fokus von Unternehmen auf Green Coding  immer noch nicht selbstverständlich. Viele Firmen können das Potenzial des Green Codings noch stärker ausschöpfen, indem sie das Bewusstsein für nachhaltige Programmierpraktiken unter ihren Entwickler:innen weiter fördern.
Erfahrene Programmierer:innen, die bereits die Prinzipien des Green Codings unbewusst anwenden, könnten durch gezieltes Training und Schulungen ihr Wissen vertiefen und somit als Vorbilder im Team fungieren. Indem das gesamte Entwicklungsteam gemeinsam an einem nachhaltigen Ansatz arbeitet, lassen sich noch effektivere Möglichkeiten zur Verbesserung der Energieeffizienz und Reduzierung der Umweltauswirkungen im Programmierprozess schaffen.
Das zahlt sich aus, denn Green Coding ist keinesfalls ein Bremsklotz. Ressourcenschonendes Coden ist vielmehr ein Produktivitätsbooster, da ein Augenmerk auf die Optimierung von Code und Energieverbräuchen gelegt wird – nicht zuletzt in Zeiten hoher Energiekosten ein Plus für jedes Unternehmen. Zudem lässt sich effizienter, gut strukturierter Code deutlich einfacher warten und betreiben. Hochwertiger Code und ein Augenmerk auf Nachhaltigkeit kommen auch bei Fachkräften gut an und steigern so die Attraktivität einer Firma am umkämpften Arbeitsmarkt für Entwickler:innen.
Quelle: Marcel Russ
Marcel Russ arbeitet seit 2022 als Manager im Bereich Enterprise Modernisation bei Exxeta, einem Technologie- und Beratungsunternehmen. Er unterstützt mit seinem Team Kund:innen dabei, mit effizienterer Software und agilen Vorgehensmodelle ihre IT zu modernisieren. Immer im Fokus die Frage: Wie können Unternehmen durch bewusste Veränderungen und den Einsatz moderner Tools nicht nur effizienter, sondern auch nachhaltiger werden? Marcel hat seine Karriere als freiberuflicher App Entwickler bereits während seines Studiums gestartet und später in Beratungsunternehmen gearbeitet. Bevor er zu Exxeta kam, war Marcel Russ Team Lead bei Hugo Boss mit Fokus auf Web & Mobile Apps sowie agilen Arbeitsmethoden. Marcel Russ ist Diplom-Informatiker und hat Software Engineering an der Universität Stuttgart studiert.


Das könnte Sie auch interessieren