Green Coding.jpg

Green Coding: 11 Tipps für nachhaltige Softwareentwicklung

Green Coding bietet das Potenzial, die Softwareentwicklung nachhaltig zu wandeln. Erfahre, wie es geht und warum die Zukunft des Programmierens grün sein muss.

Wenn wir unsere CO2-Emissionen nicht deutlich verringern, werden wir unsere ehrgeizigen Klimaziele weit verfehlen. Und einen Planet B haben wir nicht. Dabei steht Nachhaltigkeit für viele Unternehmen ganz oben auf der Agenda – aber, dass die eigene Software ein großer Stromverbraucher und damit Teil des Problems sein kann, darauf kommen viele nicht. 

Klimakiller World Wide Web? 

Dabei reicht ein kurzer Blick darauf, was bei weltweit 4,6 Milliarden Internet-Nutzenden allein in einer Minute passiert, um die Auswirkungen zu realisieren:

Innerhalb von 60 Sekunden werden rund 3,8 Millionen Suchanfragen gestellt, 695.000 Instagram-Stories geteilt sowie 42 Millionen WhatsApp Nachrichten und 198 Millionen E-Mails verschickt. Dazu kommen insgesamt 452.000 Stunden gestreamter Netflix-Content sowie 694.000 Stunden YouTube-Videos. 

Geht es so weiter, wird bis 2030 ein Drittel der weltweiten Energieproduktion für diese und andere digitale Dienste verbraucht.

So viel CO2eq (CO2-Equivalente) wird durch digitale Dienste produziert*

·      0,2 g pro Suchanfrage entsprechen insgesamt 760 kg CO2eq

·      4 g pro E-Mail (ohne Anhang) entsprechen insgesamt 792.000 kg CO2eq

·      3,2 kg für eine Stunde Streaming entsprechen insgesamt  1.446.400 kg CO2eq

·      Eine Minute E-MailNetflix- und Google-Nutzung entpricht 2.239,16 t CO2eq

* In 60 Sekunden von den 4.6 Milliarden Internet-Nutzenden. | Quelle: Statista, Domo. 

Was ist nachhaltige Softwareentwicklung?

Nachhaltige Softwareentwicklung ist ein Konzept, bei dem es im Kern um folgendes geht: Software so effizient entwickeln und nutzen, dass sie minimale oder gar keine schädlichen Auswirkungen auf die Umwelt hat.

Denn bis heute konzentriert man sich in Sachen Energieeffizienz verstärkt auf den Betrieb von Hardware. Mit dem Shift zur Wolke und zu Cloud-nativen Anwendungen wird der Impact der Softwareentwicklung auf die Klimabilanz aber immer größer. Und damit auch das Green Coding für die nachhaltige Digitalisierung zum zentralen Thema.

Was sind die vier Säulen des Green Coding?

Software­architektur, Logik, Methodik und Plattform: Über alle Bereiche und den gesamten Lebenszyklus gibt es vier grundlegende Möglichkeiten, energiesparende und nachhaltige Mechanismen zu programmieren.

Infografik Green Code.png

Grüne Architektur: Eine effiziente Softwarearchitektur soll die Hardware besser auslasten und damit Energie sparen. Etwa, indem Applikationen bei Nichtgebrauch abgeschaltet werden.

Grüne Logik: Wenn man ineffizienten Code vermeidet, der Anwendungen verlangsamt und das richtige Datendesign wählt, sinkt der Energieverbrauch.

Grüne Methodik: Kommt es zu hohen Auslastungen, kann eine agile Entwicklung schnelle Anpassungen und damit umweltfreundliche Anwendungen fördern.

Grüne Plattform: Durch modularen Aufbau und die Möglichkeit von genauen Insights, trägt die Wahl der Plattform entscheidend dazu bei, Energie zu sparen.

In puncto Plattform: Warum Hyperscaler grüner sind

Vor allem die horizontale (mehr Maschinen) und vertikale (mehr Instanzen) Skalierbarkeit der Cloud ist es, die im Vergleich zu On-Premises nachhaltige Vorteile bietet. Dafür verbinden Hyperscaler wie AWS (Amazon Web Services), Microsoft Azure oder auch GCP (Google Cloud Plattform) Millionen an physischen Servern, die in extrem effizienten Rechenzentren gehostet sind.

Hinzu kommen nachhaltige Schlüsselkompetenzen wie bei Google: Um erneuerbare Energien zu nutzen, werden die eigenen Datacenter in der Nähe zu geothermischen Quellen oder großen Wasserläufen geplant. Dazu entwickelt Google High-Tech Server Platinen, die bsp. auf Grafikkarten und Gehäuse verzichtet, da diese nicht notwendig sind. Zusätzlich wird Machine Learning genutzt, um die Kühlung mittels KI zu steuern und die Energiekosten um bis zu 30 % zu senken.

Grünes Google-Konzept: follow the sun – and the wind

Ein weiteres grünes Google-Konzept ist follow the sun – and the wind: Die kohlenstoffintelligente Plattform berücksichtigt Wettervorhersagen und örtliche Stromnetzbedingungen, um Workloads in die aktuell effizientesten Rechenzentren zu verlagern oder die zeitliche Ausführung zu planen.

Illu_Green Cod.svg

„Code kann dir helfen, die Nachhaltigkeitsziele deines Unternehmens zu erreichen und gleichzeitig das Nutzungserlebnis verbessern“

So funktioniert nachhaltige Softwareentwicklung:

1.   Nachhaltige Architektur wählen

Wie beim Bau eines Hauses gilt es, ein stabiles und gleichzeitig nachhaltiges Fundament zu wählen. Etwa, indem man ein bestehendes Framework der Hyperscaler zum Aufbau einer effizienten Cloud-Architektur nutzt, anstatt das Rad neu zu erfinden. 

2.   Datendesign und Speichertypen festlegen

Welche Daten werden wo und wie lange gespeichert? Beim Green Coding geht es darum, die Datenspeicherung auf ein Minimum zu reduzieren und eine effiziente Datenklassifizierungspolitik zu etablieren. Auch angepasste Log Level, je nach Stage wie bsp. Dev, Int und Prod sind sinnvoll.

3.   Effizient coden, agil denken

Standardbibliotheken von Apache, Guava oder Java Core bieten meist effizientere Algorithmen als eigene Implementierungen. Kommen häufige Berechnungen mit größeren Objektsammlungen vor, sollten Filterungsoperationen so früh wie möglich durchgeführt werden. Dazu helfen agile Methoden wie Pair Programming oder Code Reviews, ineffizienten Code zu identifizieren und zu verbessern.

4.   Nachhaltiges UX/UI Design nutzen

Nachhaltiges und grünes UX/UI Design bietet die Chance, nutzer- und gleichzeitig umweltfreundliche Applikationen zu gestalten. Etwa durch leicht zu findende Inhalte, Barrierefreiheit und optimierte Assets wie Bilder oder Videos, die mit minimalen Ladezeiten erst dann geladen werden, wenn sie angefordert werden. 

5.   Unnötige Berechnungen vermeiden

Wie oft hast du schon vor einem Ladebalken gewartet? Und was passiert eigentlich im Hintergrund der App? Wenn es um unnötige Berechnungen geht, helfen in Microservice-Architekturen verteilte Caches, die Anzahl der Berechnungen zu reduzieren. Dazu sollten Berechnungen nicht von jeder Instanz ausgeführt werden, sondern immer nur von einer.

6.   Fokus auf bestehende Frameworks legen

Microframeworks wie Quarkus oder Micronaut sind für ihre effiziente Performance bekannt. Dazu bietet GraalVM eine ressourcensparende und schneller startende virtuelle Maschine als JVM.

Allgemein sollte bei der Wahl des Frameworks sowohl die Auf- und Abwärtsskalierbarkeit beachtet werden. Nichts sollte immer eingeschaltet sein und im nicht Bedarf sich auf ein minimum herunter skalieren. Durch Nutzung von Native Images können jedoch im Bedarfsfall im Bruchteil einer Sekunde die Instanzen wieder hochskaliert werden.

7.   Reaktive Anwendungen im Backend erstellen

Eine asynchrone Programmierung (non-blocking I/O) ermöglicht, dass andere Verarbeitungen fortgesetzt werden, bevor die Übertragung abgeschlossen ist. So spart die raschere Reaktion Ressourcen wie Rechenzeit oder Speicherverbrauch ein, weil nicht auf Blocking i/o gewartet werden muss.

8.   Netzwerktraffic optimieren

Je mehr Daten übers Internet ausgetauscht werden, die von etlichen Servern (oder auch Netzwerkkomponenten) berechnet werden müssen, desto mehr Energie wird verbraucht. Interne Dienste sollten – im besten Fall komprimierte – Daten nur innerhalb des lokalen Netzwerks teilen.

Dazu lassen sich statische Assets im Browser oder einem Proxy zwischenspeichern, während ein Content Delivery Network (CDN) die Inhalte näher bringt. Auch die Verwendung von GraphQL anstelle von RESTful-APIs ist vorteilhaft, da nur die angeforderten Daten übertragen werden.

9.   Betriebsauslastung optimieren

Skalierbare Technologien wie Knative und Serverless erhöhen die Auslastung der Rechenleistung. Auch sollte man die Größe von virtuellen Maschinen (VM) reduzieren. Statt statisch zugewiesener Rechenressourcen können automatische Skalierung oder Burst-Funktionen zum Einsatz kommen. Und wann immer möglich, Cloud-native Lösungen.

10.   Anzahl der Microservices verringern

Immer mehr Endpunkte und Dienste blähen Architekturen und die Anzahl der Microservices unnötig auf. Wenn ähnliche Skalierungspunkte vorhanden und zwei oder mehr Mikroservices eng gekoppelt sind, sollte man Dienste kombinieren oder eine Co-Location für weniger Netzwerkverkehr in Betracht ziehen. 

11.   Energieverbrauch überwachen

Das kontinuierliche Application Performance Monitoring (APM) hilft zu verstehen, was passiert und welchen Einfluss es auf den Energieverbrauch hat. Zusätzlich ist es wichtig, Software, Websites und digitale Produkte auf ihre Effizienz zu testen und zu überwachen – etwa durch Benchmarks mit Tools wie Gatling.io oder JMeter.

Green Coding ist, wenn jede Zeile zählt

Du siehst: Green Coding kann dir und deinem Unternehmen helfen, schädliche Umweltauswirkungen zu minimieren, eigene Nachhaltigkeitsziele zu erreichen und gleichzeitig das Nutzungserlebnis zu verbessern.

Dabei steht fest: Hochgerechnet auf alle Server und Endgeräte weltweit, hat jede Zeile Code enormes Potenzial, den Energieverbrauch und die CO2-Emissionen zu senken. Jede Entscheidung ist wichtig, jede einzelne Optimierung kann in Kombination mit vielen anderen eine große Wirkung haben. Und gerade jetzt sind Unternehmen mehr denn je gefragt, ihre Software zu überprüfen und grüner zu gestalten.

Du möchtest nachhaltige Softwareentwicklung in deinem Unternehmen verankern?

FYI ...

  • Arm-with-Plant.jpg

    Mitarbeitende treiben die Nachhaltigkeit von Unternehmen

    Wenn wir bei Exxeta eines über Unternehmensnachhaltigkeit gelernt haben, dann: sich gemeinsam mit den Mitarbeitenden auf den Weg zu machen und anzupacken.

    Mehr erfahren

  • Cloud_Solution.png

    Die 7 größten Cloud-Mythen entlarvt

    Die Cloud ist unsicher, immer günstiger und es gibt sie nur aus den USA? Höchste Zeit, mit den größten Cloud-Mythen aufzuräumen.

    Mehr erfahren

  • hero_smight.jpg

    SMIGHT – IoT für Smart Cities

    Exxeta entwickelt IoT-Plattform für smarten Datengewinn

    Mehr erfahren