Umwelt 19.10.2021, 09:23 Uhr

Greencoding: Jede Zeile Code zählt

Rechner heruntertakten oder Bildschirm dunkler regeln: All das hilft, Strom zu sparen und damit die CO2-Emissionen zu reduzieren. Als Softwareentwickler haben Sie aber noch andere Möglichkeiten einzugreifen. Und dieser Hebel kann durchaus gigantische Ausmaße einnehmen.
(Quelle: dotnetpro)
Bei CO2-Ausstoß denkt man wohl sicher an die Kohleverstromung, den Flugverkehr, Autos und Lastwagen und vielleicht noch an die eigene Heizung. Die Digitalisierung hingegen sieht für viele eher als Heilsbringer aus, da durch sie beispielsweise Transporte koordiniert und damit Einsparungen bei der Emission von CO2 gemacht werden können.
Aber das ist nur die eine Seite. Denn auch der Betrieb von Laptops, Routern, Servern, der Cloud und den Netzen bedarf immer mehr Strom und damit belastet auch die IT immer mehr die Umwelt durch CO2-Ausstoß. Von Mining-Farmen für Blockchain-Währungen ganz zu schweigen.

Scope 1, 2, 3

Eingedenk, dass ein Baum je nach Größe und Standort pro Jahr rund 10 Kilogramm CO2 bindet, sind Zahlen wie der summierte Stromverbrauch eines Laptops einigermaßen erschreckend: Acht Bäume braucht es im Jahr, um das CO2 zu kompensieren, das nur durch den Stromverbrauch des Computers erzeugt wird. Die Betonung liegt hier auf "nur den Stromverbrauch". Denn so ein Laptop muss gebaut, transportiert und schließlich auch entsorgt werden.
Man teilt hier den CO2-Fußabdruck einer Firma in drei Bereiche, die Scopes genannt werden [1]. Zu Scope 1 gehören die direkten Emissionen aus den betrieblichen Einrichtungen wie Heizung oder Klimatisierung von Bürogebäuden und die Emissionen der Firmenfahrzeuge. Scope 2 ist der gekaufte Strom, die gekaufte Wärme etwa bei Fernwärme. Und zu Scope 3 zählen Dinge wie der Arbeitsweg aber besonders die Emissionen, die durch Produktion, Transport und Entsorgung für die Ausgangsstoffe erzeugt werden, die für die Produktion der eigenen Produkte benötigt werden (vorgelagert), sowie Transport, Betrieb und Entsorgung für die eigenen Produkte (nachgelagert).
Während bei Software der vorgelagerte Scope 3 verschwindend gering ist, schlägt er beim nachgelagerten Scope 3 voll zu. Software, die eine Firma für einen Kunden geschrieben hat, wird danach verwendet und verbraucht dabei Strom, benötigt Server und so weiter. Microsoft geht davon aus, dass sie im Jahr 2020 über alle Scopes hinweg 16 Millionen Tonnen CO2 emittiert haben [2]. Zwölf Millionen Tonnen, also 75 Prozent, davon entfallen auf Scope 3, also in erster Linie auf den Betrieb der Software, die Microsoft verkauft.
Es ist also für Consultingunternehmen und Softwareentwickler elementar, sich Gedanken über ihre Software zu machen, denn schlecht geschriebene Software kann für große CO2-Emissionen sorgen, wohingegen gut geschrieben Software unnötigen Stromverbrauch vermeiden hilft.

Wieviel Emissionen entfallen auf die IT?

Derzeit beträgt der Anteil an den Emissionen für die IT laut GFT drei Prozent im Vergleich zur gesamten Industrie mit 24 Prozent. Aber mit der fortschreitenden Digitalisierung wird dieser Anteil ansteigen.
Wie aber andere Branchen auch, kann die IT gegen das Anwachsen einiges tun. Grüner Strom ist sicher ein probates Mittel, das langfristig aber nicht ausreichen wird. Vielmehr wird schon bei der Entwicklung von Software darauf geachtet werden müssen, dass stromzehrende Prozesse durch stromsparende ersetzt werden.
Inwiefern der Dark Mode eines Bildschirms hier etwas bringt, hängt vom Bildschirm ab. Aber vielfache Anfragen an einen Server, die durch eine einzige ersetzt werden, können Strom sparen. Wo bei der Softwareentwicklung gilt: "Eine nicht geschriebene Zeile Code enthält auch keine Bugs" gilt für den Energiebedarf: "Jede Anfrage, die nicht gestellt werden muss, verbraucht auch keinen Strom".
Die GFT stellt sich dieser Herausforderung und sammelt in einem internen Arbeitskreis Möglichkeiten, bei der Softwareentwicklung Strom zu sparen. Als Beispiel für Einsparpotentiale nennt Tim Schade, Softwarearchitekt bei GFT, die App-Entwicklung. Ist ein Entwicklungsteam in der Lage, den Startvorgang der App von drei auf zwei Sekunden reduzieren, so dass der Anwender eine Sekunde früher mit seiner Arbeit beginnen kann, so spart das bei einer Million Nutzer der App in einem Jahr 132 Kilogramm CO2. Das entspricht der Menge an Treibhausgas, die rund 13 Bäume pro Jahr binden. Oder anders ausgedrückt, den Emissionen einer Autofahrt von Berlin nach Wien.
Das Beispiel zeigt schon, dass es durchaus massive Einsparschätze gibt, die Entwickler mal einfacher, mal aufwendiger heben können.
Recht einfach lässt sich beispielsweise die Datenmenge reduzieren, die bei einer Anfrage an einen Webserver auftritt. Das Stichwort heißt hier Komprimierung. Fragt der Browser beim Server die Inhalte einer Url an, so gibt der Server über den http-Header dem Server bekannt, welche Formate er versteht [3]. Der Server kann dementsprechend die Dateien in diesem Format schicken. Auf diese Weise lassen sich HTML-Seiten auch gezipt, also komprimiert übertragen. Der Browser gibt über den Eintrag
Accept-Encoding: gzip, compress, deflate
im Header der Anfrage bekannt, dass er sich auch komprimierte Datenpakete versteht. Der Server antwortet [4] darauf wieder im Header beispielsweise mit
Content-Encoding: gzip
was so viel heißt wie: Ich kann dir die Daten in einem gzip-Archiv schicken. Stimmen Anfrage und Angebot überein, kann der Browser die Datei in diesem Format laden.
Bei HTML-Dateien reduziert das komprimierte Übertragen die Datenmenge um rund 90 Prozent. Die GFT rechnet vor, dass das bei HTML-Daten von 200 Kilobyte komprimiert auf 20 Kilobyte pro Jahr 10 Kilogramm CO2 einsparen kann, wenn die Seite rund eine Million Mal pro Jahr übertragen wird. Das gilt allerdings nur für Textdateien und nicht für Bilder, da diese meist sowieso schon komprimiert sind.

Push und Cache

Der letzte Abschnitt zeigt schon, dass die Übertragung von Daten, oder besser die Nicht-Übertragung der große Hebel sein kann. Mit einem Cache müssen viele Abfragen gar nicht erst stattfinden, da sie in der Vergangenheit schon einmal durchgeführt wurden und die Ergebnisse schon im Cache liegen.
Aber auch Techniken wie Push statt Pull bringen Einsparungen: Statt beispielsweise alle zehn Sekunden beim Server anzufragen, ob sich Daten geändert haben, registriert sich der Client beim Server. Ändern sich jetzt die Daten auf dem Server, teilt dieser das dem Client mit. Es muss also nur dann etwas übertragen werden, wenn sich auch tatsächlich etwas geändert hat.

Fazit

Zugegeben: Die Denke, dass man mit dem eigenen Code Strom und damit CO2-Emissionen einsparen kann, ist erst einmal befremdlich – aber wie die Beispiele zeigen, durchaus nachvollziehbar. Es hängt also auch an Ihnen, etwas für einen geringeren Stromverbrauch zu tun.


Das könnte Sie auch interessieren