arrow arrow--cut calendar callback check chevron chevron--large cross cross--large download filter kununu linkedin magnifier mail marker media-audio media-blog media-video menu minus Flieger phone play plus quote share youtube

Green IT @ Cologne Intelligence

IT-Systeme klimafreundlich gestalten

Wie und wann kommen wir dazu, uns mit Green IT zu beschäftigen? Bei Cologne Intelligence gibt es die sogenannte „4+1 Regelung“: 80% unserer Arbeitszeit widmen wir den Kundenprojekten, die verbleibenden 20% stehen zur Verfügung, um etwas „für uns“ zu tun. Das kann die eigene berufliche Entwicklung / Weiterbildung sein oder etwas, das uns als Firma weiterbringt. Für letzteres finden sich beispielsweise seit einem halben Jahr regelmäßig Initiativen-Gruppen zusammen, die dann jeweils für ein Quartal ein selbst gewähltes Thema bearbeiten. Eines davon ist Green IT.

Wieso Green IT?

Im Rahmen unserer Mitarbeitergenossenschaft haben wir uns selbst verschiedene „Leitplanken“ gesetzt, zwischen denen wir uns bewegen und aus denen wir Entscheidungen ableiten. Eine davon:

Die CI fördert aktiv die Verantwortung der CI und jedes Einzelnen für eine klimaneutrale Zukunft.

Unternehmensleitplanke für Cologne Intelligence, CI One eG

Foto von Lukas Winter und Mario Breyer
Lukas Winter und Mario Breyer

Software Developer

Diese Einstellung hat in der Vergangenheit bereits dazu geführt, dass Dienstwagen und der Flug zur Konferenz größtenteils gegen Jobticket und die Bahn für Dienstreisen getauscht wurden.

Doch auch IT-Systeme selbst verursachen einen nicht unerheblichen Beitrag zur globalen Erwärmung. Alle IT-Systeme zusammen verursachen laut einer Studie aus 2021 zwischen 2.1 - 3.9% der globalen Treibhausgas-Emissionen [1]. Was zunächst nicht nach viel klingt, ist aber bereits heute etwa auf einem Level wie der gesamte Flugverkehr. Mit steigendem Trend. Müssen wir als Expert*innen des Gebiets jetzt in IT-Scham versinken, oder können wir dazu beitragen an den richtigen Stellschrauben zu drehen, um unsere Software grüner zu machen?

Wo entstehen bei uns CO2-Emissionen?

Wir selbst „produzieren“ bei unserer Arbeit als Software Developer und Berater*innen direkt eher geringe Mengen CO2. Zudem hosten wir nur wenige Ressourcen selbst (einige Testumgebungen, Build-Server, Repositories). Aber unsere an den Kunden gelieferten Softwareprodukte, ob sie nun Serverless, in der Cloud oder On Prem gehostet sind, verursachen natürlich ebenfalls einen Stromverbrauch und benötigen Hardware-Ressourcen. Je nach Herkunft des Stroms ist dessen Produktion mehr oder weniger mit dem Ausstoß klimaschädlicher Treibhausgase verbunden.
Die benötigten Hardware-Ressourcen wiederum verwenden seltene Rohstoffe und werden global mit komplexen Lieferketten und langen Transportwegen produziert. Dazu kommt dann die Frage welchen Einfluss die Infrastruktur selbst hat: Wie wirkt sich die Länge der Übertragungsstrecken der Daten zwischen Client und Server auf den Stromverbrauch im Netz aus?

Wie können wir besser werden?

Für viele dieser Faktoren haben wir zum Glück direkte oder indirekte Stellschrauben. Je nachdem wie effizient oder ressourcenhungrig unsere Softwarelösung ist, entsteht also durch verantwortungsvollen Umgang ein Einsparpotential.

Um das unendlich weite Feld für uns etwas greifbarer zu machen, haben wir uns zuerst auf die „Low Hanging Fruits“ konzentriert. Wo können wir mit unserem häufigsten Tech-Stack mit dem geringsten Aufwand die größten Einspareffekte erzielen?

Außerdem wollten wir am Ende auch die verschiedenen Maßnahmen überprüfen: Wie viel Energie kann durch die einzelnen Maßnahmen wirklich gespart werden? Meine Kollegen Jochen und Mario wollten es genau wissen und haben ihr eigenes Test-Setup entwickelt, das es ihnen ermöglicht, eigene Messungen zum Stromverbrauch durchzuführen. Dazu berichten sie in Kürze ebenfalls hier im Blog.

Unsere Initiative endete nach dem geplanten Quartal mit einem von uns für alle Mitarbeiter angebotenen „Open Friday“ Talk zu unseren Erkenntnissen, viel Lust auf mehr Experimente und der Idee, unsere Erkenntnisse hier im Blog auch über Cologne Intelligence hinaus zu teilen.

Energieverbrauch der einzelnen Programmiersprachen
(Aus [2])

Optimierung von Software

Die Optimierung von Software auf einen geringen Energieverbrauch hin ist kein komplett neues Phänomen. Bei der Mobile-App Entwicklung z.B. ist der Stromverbrauch schon länger ein betrachteter Faktor. Wer möchte schon eine App, die den Akku trotz einer simplen Aufgabe innerhalb kurzer Zeit leer zieht?

Dennoch ist das Optimieren von Software auf einen geringen Energieverbrauch hin noch ein komplexes Problem, denn der Energiebedarf hängt von vielen Faktoren ab und es gibt in vielen Bereichen noch keine Best Practices.

Allein die grundlegende Wahl der Programmiersprache kann schon einen entscheidenden Einfluss haben. In einer Studie [2] wurde der Stromverbrauch verschiedener Programme, die alle dasselbe Beispiel-Problem lösen, aber in verschiedenen Programmiersprachen implementiert wurden, verglichen. Als Referenz wurde die Sprache C, die für ihre Hardwarenähe und geringen Energieverbrauch bekannt ist, gewählt.

Hier fällt auf, dass z.B. Python im selben Anwendungsfall das 80-Fache an Energie benötigt.

Unsere meistverwendete Programmiersprache Java kommt immerhin nur auf einen Wert von 1,98, Was für unser weiteres Vorgehen schonmal eine gute Ausgangssituation darstellt.

Weitere Stellschrauben sind z.B. Frameworks, Libraries, Übertragungsformate für Datenaustausch, welche Collections an welchen Stellen verwendet werden und vieles mehr.

Grundlagen

Das Ziel sollte immer sein, Emissionen zu reduzieren. Sie entstehen sowohl bei der zum Betrieb notwendigen Energieerzeugung und bei der Herstellung der Hardware.

Um die Energieeffizienz zu steigern, sollte die Hardware entsprechend dem Lastszenario dimensioniert werden. Dabei gilt als Daumenregel, dass ein Rechner mit 100% Last weniger Energie verbraucht als 10 Rechner, die nur mit je 10% Last laufen.

Ebenfalls sollte man bei steigenden Leistungsansprüchen auch nicht sofort daran denken die Hardware aufzustocken, sondern stattdessen überlegen, ob evtl. die Software optimiert werden kann.

Eine Möglichkeit sind effiziente Algorithmen / Datenstrukturen. Um Entwickler*innen bei der Auswahl der richtigen Datenstrukturen, in diesem Fall der richtigen Java Collection, für den speziellen Anwendungsfall zu helfen, macht beispielsweise das Eclipse Plugin „jStanley“ mit Hilfe von statischer Analyse Vorschläge und bietet QuickFixes an. Die Autoren [4] konnten hierbei den Energieverbrauch verschiedener Anwendungen ohne weitere Maßnahmen zwischen 2% und 17% reduzieren.

Bei gleichbleibendem Ressourceneinsatz gilt hierbei meist, dass die Ausführungszeit äquivalent ist zum Stromverbrauch. Das heißt, optimierte Software hat neben einem geringeren Energieverbrauch meist auch eine kürzere Ausführungszeit.

Green Cloud / Green Infrastructure

Die Möglichkeiten der Cloud lassen uns einige Hebel besonders gut nutzen. So hat man beispielsweise die Kontrolle über die Hosting-Region. Um die verursachten Emissionen gering zu halten, bietet es sich hier an, im Rahmen der gesetzlichen Regelungen eine Hosting Region mit einem hohen Anteil an erneuerbaren Energien im Strommix auszuwählen. Das kann entweder marktbasiert erfolgen (kauft der Anbieter des Rechenzentrums Ökostrom?) oder lokal (wie ist der generelle Strom-Mix am Standort?).

AWS Footprint Tool - Green IT

Dazu bieten die einzelnen Cloud-Anbieter Informationen auf ihren Websites oder haben teilweise eigenes Tooling wie das „AWS CO2 Footprint Tool“, das ein Dashboard für die geschätzten Emissionen pro Account bietet.

Electricity Maps - Green IT

Für Informationen zum lokalen Strommix gibt es zum Beispiel electricitymaps.com und viele weitere Quellen. Dort sieht man, dass sich für uns eventuell ein Hosting in den skandinavischen Ländern lohnen kann, da dort die Emissionen pro kWh wesentlich geringer sind als in Deutschland.

Wenn man flexible Workloads hat (Batch-Jobs, Machine Learning etc.) kann man diese auch dynamisch vom Strommix abhängig machen und laufen lassen, wenn aufgrund der Tageszeit grade viel Energie aus Sonne oder Wind erzeugt wird.

Ein weiterer Hebel, der sich in der Cloud hervorragend nutzen lässt, ist durch die Nutzung von Elastizität die Ressourcen der Nachfrage anzupassen und so sowohl den Stromverbrauch als auch das in Hardware gebundene CO2 zu reduzieren. Freigegebene Ressourcen können dann entweder abgeschaltet oder von jemand anderem genutzt werden.

Auch ein Skalieren der Ressourcen auf 0 kann sinnvoll sein. Vielleicht gibt es Entwicklungsumgebungen, die nachts oder am Wochenende nicht unbedingt laufen müssen. Oft laufen die Instanzen trotzdem durch, aus Sorge vor einem zu großen Overhead beim Starten. Hier sollte das Ziel sein, mittels Automation für diese Umgebungen einen Plan zu entwickeln, der einen zuverlässigen Start garantiert. Das bietet nicht nur die Möglichkeit des Abschaltens (manuell oder nach einem Zeitplan), sondern stellt auch gleichzeitig einen optimalen Plan für Disaster Recovery dar, denn für den Fall eines Systemabsturzes wurde dann regelmäßig „trainiert“.

Dieses Vorgehen nennt Holly Cummings in einem Talk „Lightswitch Ops“ [3]. Wenn unsere System-Starts so zuverlässig werden wie das Licht anzuschalten, dann wird es zur Selbstverständlichkeit, dass man diese Systeme nur laufen lässt, solange sie benötigt werden.

Grüne Zertifikate und Siegel

Auch in der IT sollen einem Zertifikate und Siegel Orientierung bieten können. Allerdings sind diese oft mit Vorsicht zu genießen. Wenn die Bewertung intransparent stattfindet, die Ziele viel zu niedrig gesteckt sind oder sich Firmen die Siegel einfach selber vergeben, haben diese natürlich keine Aussagekraft.

Ein Lichtblick ist hierbei der Blaue Engel vom Umweltbundesamt. Dieser bewertet unterschiedlichste Bereiche, die auch einen Entwickler im Arbeitsalltag betreffen: Von Tastatur und Maus über den Bildschirm und konkret Software bis hin zu Rechenzentren. Dabei sind die Kriterien und Ergebnisse online öffentlich einsehbar [5]. Daher kommen die Blauen Engel auch in einer unabhängigen Siegel-Bewertung gut weg [6].

Bei Rechenzentren wird zum Beispiel bewertet, woher der Strom für den Betrieb des Rechenzentrums kommt, wie die Hardware ausgewählt wird und was eigentlich mit der ganzen Abwärme gemacht wird. Der Kerngedanke bei der Bewertung von Software ist es, dass die Hardwareanforderungen und der Stromverbrauch minimiert werden. Dadurch bleibt die Software auf alter Hardware lauffähig und Elektroschrott wird vermieden.

So kommen auch ganz neue Aspekte bei der Softwareentwicklung ins Spiel. Wer erfasst für seine Software schon die Hardwareanforderungen oder gar den Stromverbrauch und vergleicht diese auch noch bei jedem Release? Interessanterweise können dadurch auch interessante Synergieeffekte entstehen. Wird in einem Release unerwarteterweise auf einmal die Hardware gesprengt oder der Stromverbrauch geht durch die Decke, kann dies auch ein Indikator für ineffiziente Algorithmen oder  Bugs sein.

Natürlich sind diese Zertifizierungen völlig freiwillig und daher noch nicht so häufig vergeben worden. Trotzdem kann ein solches Siegel ein guter Indikator für die Auswahl meines Rechenzentrums sein bzw. kann ich einen kleinen Beitrag zur Nachhaltigkeit leisten, wenn meine Software die Kriterien des Siegels einhält.

Abschließend sei noch erwähnt, dass es vom TÜV Rheinland den “Sustainable Data Center” Standard gibt, nachdem sich ein Rechenzentrum zertifizieren lassen kann. Allerdings ist hier die Transparenz zu wünschen übrig. Weder werden die Kriterien klar definiert, noch lassen sich die Ergebnisse einer Bewertung öffentlich einsehen [7].

Quellen

[1] Freitag, Charlotte, et al. "The real climate and transformative impact of ICT: a critique of estimates, trends, and regulations. Patterns 2 (9), 100340 (2021)." (2021).

[2] Pereira, Rui, et al. "Energy efficiency across programming languages: how do energy, time, and memory relate?." Proceedings of the 10th ACM SIGPLAN international conference on software language engineering. 2017.

[3] Holly Cummins “Writing Greener Java Applications”
hollycummins.com/writing-greener-java-applications/

[4] Pereira, Rui, et al. "jstanley: Placing a green thumb on java collections." Proceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering. 2018.

[5] https://www.blauer-engel.de/de/produkte

[6] https://label-online.de/suche/?q=blauer+engel

[7] https://www.tuv.com/germany/de/sustainable-data-center.html