Dekarbonisieren Sie Ihre IT mit nachhaltiger Softwareentwicklung

Dekarbonisieren Sie Ihre IT mit nachhaltiger Softwareentwicklung

🛠️ Diese Seite wird gerade ins Deutsche übersetzt.
🛠️ Diese Seite wird derzeit ins Deutsche übersetzt.
Trägt Ihre Software heimlich zu globalen Emissionen bei? Entdecken Sie, wie nachhaltiges Engineering die IT zu einer Kraft für den Klimaschutz machen kann.
Bitte akzeptiere Marketing-Cookies um auf die Audio-Lese-Funktion zuzugreifen.
4. Februar 2025

Der Anteil der IT an den weltweiten Treibhausgasemissionen liegt bereits bei 4% - und das nicht nur aufgrund des aufkommenden Trends, Generative AI in immer mehr Produkte zu integrieren, sondern diese Zahl wird voraussichtlich in den kommenden Jahren dramatisch steigen.

Die Green IT-Community arbeitet unermüdlich an Möglichkeiten, den CO₂-Fußabdruck von Software zu reduzieren, von lokal ausgeführten Binärdateien bis hin zu vollwertigen Kubernetes-Clustern. Dieses Wissen kann auf die Dekarbonisierung von Softwareunternehmen oder allgemeiner auf Organisationen angewendet werden, in denen IT der primäre Treiber der Wertschöpfung ist.

Was ist Green IT?

Definition

Green IT (grüne Informationstechnologie): Umweltfreundliches Computing umsetzen, indem der Energieverbrauch gesenkt, elektronischer Abfall minimiert und der Lebenszyklus von IT-Ausrüstung optimiert wird, um die Umweltauswirkungen zu verringern.

Green IT zielt darauf ab, den CO₂-Fußabdruck und den Elektronikschrott durch CO₂-effiziente Software und nachhaltiges Ressourcenmanagement zu reduzieren. Letzteres kann durch Maßnahmen wie folgt erreicht werden:

  • Verwendung von generalüberholten Produkten,
  • Produkte länger nutzen, bevor sie ersetzt werden,
  • Produkte bevorzugen, die leichter repariert und recycelt werden können,
  • Produkte mit geringerem Energieverbrauch bevorzugen

Dieser Artikel wird sich jedoch auf die CO₂-Effizienz und den Betrieb von Software konzentrieren. Mit anderen Worten, wir wollen die CO₂-Emissionen der Software pro Recheneinheit so weit wie möglich reduzieren.

Was sind die Vorteile von Grüner IT?

Nachhaltige Software reduziert CO₂-Emissionen und führt zu erheblichen Kosteneinsparungen. Dies gilt insbesondere, wenn Ihre Software in der Cloud betrieben wird, wo der Ressourcenverbrauch genau verfolgt und abgerechnet wird.

Der Fokus auf Nachhaltigkeit kann auch zu einer besseren Softwareleistung und damit zu höheren Einnahmen führen. Eine leichte Website beispielsweise schneidet in der SEO besser ab (was auch heute noch relevant ist, selbst mit dem Aufstieg von GenAI), und schnelles Laden von Websites ist bekannt dafür, dass es höhere Konversionsraten erzielt.

Messung der Softwareemissionen

Bevor Sie mit der Optimierung der Effizienz der Software beginnen, sollten Sie zunächst in der Lage sein, ihren CO₂-Fußabdruck zu messen. Andernfalls können Sie die Auswirkungen Ihrer Bemühungen nicht angemessen bewerten. Daher werden wir erläutern, welche Möglichkeiten zur Messung der Softwareemissionen zur Verfügung stehen.

Software emittiert indirekt CO₂ durch den Stromverbrauch der CPU, die Speichernutzung und den Datentransfer zu/von Speichermedien wie Festplatten oder über das Netzwerk. Jede durch die Software verursachte Operation erhöht somit den Stromverbrauch.

Eine weitere Emissionsquelle ist die Produktion der Geräte, auf denen unsere Software läuft. Das sogenannte verkörperte Kohlenstoff eines Geräts umfasst Verpackung, Transport und die Behandlung am Ende seiner Lebensdauer, wie zum Beispiel Entsorgung oder Recycling.

Lokale Systeme

Für lokale Geräte, wie einen physischen Server oder einen Desktop-Computer, kann der Verbrauch direkt gemessen werden, indem ein Wattstundenmesser zwischen dem Gerät und der Steckdose installiert wird. Anhand der Kohlenstoffintensität, d.h. der Menge an Kohlenstoffäquivalenten, die zur Erzeugung einer Kilowattstunde Elektrizität freigesetzt werden (in der Regel gemessen in gCO2eq/kWh), des lokalen Stromnetzes, wenn die Software ausgeführt wird, können wir die CO₂-Emissionen abziehen.

Dieses Setup kann jedoch knifflig sein, da in der Regel viele Hintergrundaufgaben auf einem System ausgeführt werden, was zu Abweichungen bei der Messung führen kann. Um Messfehler zu beseitigen, sind mehrere Durchläufe mit demselben System-Setup und denselben Softwareoperationen erforderlich.

Ein einfacher Ansatz besteht darin, Green Metrics Tools von Green Coding zu verwenden. Dieses Open-Source-Tool misst den Energieverbrauch von Software mithilfe von Schnittstellen wie dem Running Average Power Limit (RAPL) spezifischer CPUs. Für die besten Ergebnisse ist ein dedizierter Cluster erforderlich, auf dem die Software isoliert ausgeführt und gemessen werden kann. Eine gehostete SaaS-Version ist ebenfalls verfügbar, wenn Sie den Cluster nicht betreiben möchten.

Wenn Ihre Anwendung mit Docker containerisiert ist, sollten Sie das Tool GreenFrame in Betracht ziehen. Die Einrichtung ist einfacher, da es die erforderlichen Nutzungsdaten direkt von Docker enthält. Obwohl es Open Source ist, wird die kostenpflichtige Version benötigt, wenn Sie detaillierte Informationen wünschen.

Cloud-basierte Anwendungen

Wir können offensichtlich keine Strommonitore für Anwendungen verwenden, die in der Cloud betrieben werden. Wir müssen uns auf die Daten verlassen, die der Cloud-Anbieter sammelt. 

Viele große Anbieter, insbesondere AWS, Google Cloud und Microsoft Azure, stellen bereits CO₂-Fußabdruckberichte zur Verfügung. Diese Daten sind jedoch nicht in einem standardisierten Format verfügbar, was den Vergleich erschwert. Einige Anbieter verwenden auch marktbasierte Emissionen (berechnete Emissionen, die Power-Purchase-Agreements oder andere Kompensationsmethoden berücksichtigen), die für Reporting-Zwecke nützlich sind. Um jedoch IT-Systeme hinsichtlich der Kohlenstoffeffizienz zu optimieren, sind standortbezogene Emissionen, d.h. die am Standort des Rechenzentrums verursachten „realen“ Emissionen, relevanter.

Es kann auch eine Verzögerung von bis zu 3 Monaten auftreten, bis der Anbieter alle Daten aus seinen weltweiten Rechenzentren zusammengetragen hat und die Emissionen verfügbar macht. Das ist viel zu lang, um Arbeitslasten zeitnah zu optimieren.

Cloud-CO₂-Fußabdruck-Tool

Es gibt jedoch Hilfe: Da Cloud-Anbieter jede einzelne Transaktion verfolgen, um uns dafür abzurechnen, können wir diese detaillierten Daten nutzen, um die Emissionen basierend auf dem genutzten Service und der Nutzungsdauer abzuschätzen. Das Cloud Carbon Footprint Tool (CCF) übernimmt die schwere Arbeit für uns. 

Es nutzt die Cloud-Nutzungsdaten, die es über APIs erhält, um genaue Emissionsschätzungen zu erstellen. So kann das Tool nahezu Echtzeitdaten zu den Emissionen Ihres AWS-, Google Cloud- oder Microsoft Azure-Kontos bereitstellen, was es zum perfekten Werkzeug macht, um Ihre Optimierungsreise zu starten. Darüber hinaus berücksichtigt es auch den verkörperten Kohlenstoff, aufgeschlüsselt über die typische Nutzungsphase der Hardware, auf der die Cloud-Dienste betrieben werden.

Andere Ressourcen

Die oben genannten Werkzeuge sind tatsächlich eine Überlegung wert für Ihre Einrichtung. Weitere Ideen finden Sie auf einer der vielen Linklisten, wie zum Beispiel im Green Software Directory von GitHub oder Awesome Green Software der Green Software Foundation.

Wie man Softwareemissionen reduzieren kann

Sobald Sie die Emissionen Ihrer Cloud-Konfiguration täglich messen können, ist es endlich an der Zeit, mit der tatsächlichen Optimierung zu beginnen. Um Ihre Ergebnisse zu maximieren, starten wir mit Handlungsempfehlungen, die einen relativ geringen Aufwand erfordern, aber ein erhebliches Reduktionspotenzial für Ihre Softwareemissionen haben.

Ebene 1 - Infrastruktur

Bevor Sie Ihren Code optimieren, müssen Sie sicherstellen, dass Ihre Infrastruktur keine Ressourcen verschwendet. Dazu ist es erforderlich, jeden Teil Ihrer Infrastruktur genau zu überprüfen.

Wenn Sie Ihre Infrastruktur in der Cloud betreiben, können Sie den Abrechnungsdienst der Anbieter nutzen, um die größten Kostenblöcke als Ausgangspunkte zu identifizieren. Hier sind einige typische Punkte, auf die Sie achten sollten.

Unnötige Ressourcen entfernen

Unnötige Server und Workloads zu finden und zu entfernen, ist eine einfache und effektive Möglichkeit, Ihren CO₂-Fußabdruck zu reduzieren. Im Laufe der Zeit neigen Systeme dazu, unübersichtlich zu werden. Dienste werden ersetzt, aber nicht sofort gelöscht und letztendlich vergessen, oder wiederkehrende Aufgaben sind nicht mehr erforderlich, laufen aber weiterhin unbemerkt.

Es kommt sogar vor, dass volle Server (sowohl physische als auch virtuelle) nutzlos werden. Ein untätiger Server verbraucht jedoch eine beträchtliche Menge Energie, da Komponenten wie das Motherboard weiterhin mit Strom versorgt werden müssen. Aus diesem Grund werden diese überflüssigen Server auch als „Zombies“ bezeichnet – sie leisten keinen produktiven Beitrag, sondern ziehen wertvolle Ressourcen ab.

Durch die Verwendung von Systemprotokollen und Überwachungstools ist es relativ einfach festzustellen, ob eine Ressource noch in Verwendung ist. Wir möchten jedoch vorsichtig sein, um Nebenwirkungen zu vermeiden. Dies kann durch sogenannte „Scream Tests“ erreicht werden. Wenn Sie sicher sind, dass eine Ressource nicht mehr in Gebrauch ist, kommunizieren Sie Ihre Maßnahme und deaktivieren oder trennen Sie (aber löschen Sie nicht!) die betreffende Ressource. Wenn jemand beschwert, dass sein System betroffen ist, können Sie es schnell wieder aktivieren. Denken Sie daran, dass einige Aufgaben wöchentlich oder sogar monatlich wiederkehrend sind, daher sollte der Zeitraum berücksichtigt werden – löschen Sie es also nicht zu früh.

Optimieren Sie Ihre Infrastruktur

Cloud-Dienste ermöglichen es, Ressourcen in praktisch beliebiger Größenordnung bereitzustellen. Das führt häufig zu einer Überprovisionierung: Größere Instanzgrößen als erforderlich werden gewählt, um sicherzustellen, dass das System über genügend Rechenressourcen verfügt.

Der Prozess der Optimierung von Instanzgrößen wird auch als „Rightsizing“ bezeichnet. Ziel ist es, eine Instanzgröße zu finden, die zu einer hohen Auslastung führt, ohne ihre Grenzen zu erreichen. Dies ist wichtig, da ein Server, der nur geringfügig ausgelastet ist, bereits eine erhebliche Menge an Energie verbraucht, und der Betrieb bei hoher Auslastung nicht viel mehr verbrauchen wird. Dieser etwas kontraintuitive Effekt wird Energieproportionalität genannt. 

Cloud-Anbieter wie AWS unterstützen Sie sogar bei dieser Aufgabe und bieten Dienste wie den Cost Optimisation Hub an, der empfiehlt, welche Instanzen über- oder unterversorgt sind, basierend auf Ihrer tatsächlichen Nutzung.

Die von Ihnen als Dienst angebotene Software wird wahrscheinlich nicht gleichmäßig über den Tag hinweg genutzt. Es wird Nutzungsspitzen geben, die es schwierig machen, die richtige Größe zu finden. Wenn diese Spitzen nur sporadisch und relativ kurz auftreten, können Burstable Instances hilfreich sein. Sie bieten Ihnen eine bestimmte Menge an „zusätzlicher Leistung“, d.h. Sie können sie kurzfristig mehr als 100 % nutzen. Wenn die Nutzung über die Zeit stark variiert, müssen Sie die Ressourcen dynamisch zuweisen, was wir im nächsten Abschnitt behandeln werden.

Ressourcen dynamisch zuweisen

Ein wesentlicher Vorteil der Cloud besteht darin, dass Ressourcen automatisch hinzugefügt oder entfernt werden können, je nach den aktuellen Bedürfnissen. Dieser Prozess der dynamischen Ressourcenallokation ist auch als Autoskalierung bekannt.

Statt eine einzige prominente Instanz bereitzustellen, die genügend Puffer für alle erwarteten Spitzen hat und oft untätig ist, kann die Arbeitslast auf mehrere kleinere Instanzen verteilt werden. Durch das von allen Cloud-Anbietern angebotene Autoscaling können zusätzliche Ressourcen automatisch zugewiesen werden, wenn die Last steigt. Ebenso können sie deaktiviert werden, sobald sie nicht mehr benötigt werden.

Seien Sie jedoch vorsichtig, dass das automatische Skalieren eine Feinabstimmung erfordert und regelmäßig überprüft werden sollte. Sie sollten sinnvolle obere Grenzen festlegen. Andernfalls können Konfigurationsfehler kostspielig werden und Ihre Einsparungen bei den CO₂-Emissionen gefährden.

Nutzen Sie Spot-Instanzen

Spot Instances sind kurzfristige Überschusskapazitäten, die ein Cloud-Anbieter nicht verkaufen kann, weshalb sie zu einem niedrigeren Preis als reguläre Bedarfsinstanzen angeboten werden. Ein allgemeiner Nachteil ist, dass diese Instanzen in der Regel kurzlebig sind und der Cloud-Anbieter sie nach einer kurzen Benachrichtigungsfrist entfernen kann. Sie sind jedoch weiterhin gut geeignet für kontrollierte Arbeitslasten, die unterbrochen werden können, wie beispielsweise die Verarbeitung von Job-Warteschlangen.

Der ökologische Nutzen ergibt sich aus der Energieproportionalität, die oben erläutert wurde: Wenn Sie Spot-Instanzen verwenden, können Sie vorhandene virtuelle Maschinen besser nutzen, anstatt zusätzliche zu erstellen, die wahrscheinlich nur bei einer bestimmten Auslastungsrate betrieben werden.

Sammle deinen Müll

Daten im Ruhezustand, also Daten, die lokal oder in der Cloud gespeichert sind, sind eine weitere Emissionsquelle, die es wert ist, berücksichtigt zu werden. Cloud-Speicher ist außergewöhnlich günstig, weshalb es verlockend ist, Daten einfach dort zu speichern und sie zu vergessen. Allerdings müssen die Daten dennoch auf physischen Laufwerken gespeichert werden, die hergestellt, versandt und in Rechenzentren gehostet werden müssen.

Die beste Option ist natürlich, Daten gar nicht erst zu speichern. Wenn dies nicht vermieden werden kann, können Sie das Log- oder Dateiaufbewahrungsmanagement von Cloud-Systemen nutzen, wo Sie konfigurieren können, dass Daten nach einer bestimmten Zeit automatisch gelöscht werden. Bei selbstgehosteten Systemen ist es ebenfalls möglich, wenn auch mit etwas mehr Aufwand, Daten wie Backups oder Logs automatisch zu löschen.

Sei vorsichtig mit "Lift and Shift."

Wenn Sie planen, Anwendungen in eine Cloud-Umgebung zu migrieren, vermeiden Sie „Lift and Shift“, d.h. den direkten Transfer aller Komponenten ohne Neugestaltung. Es ist oft besser, die cloudnativen Dienste zu nutzen, die Ihr Anbieter anbietet. Wenn Ihre Anwendung beispielsweise einen Nachrichtenbroker wie RabbitMQ verwendet, sollten Sie in Erwägung ziehen, zu einem verwalteten Dienst zu wechseln, anstatt Ihre Serverinstanz(en) selbst zu hosten.

Entwicklungsumgebungen ausschalten, wenn sie nicht benötigt werden.

Neben der Produktionsumgebung gibt es in der Regel weitere Umgebungen wie die Entwicklungs- oder Benutzerakzeptanztests, die am Wochenende oder nachts, wenn niemand an ihnen arbeitet, nicht laufen müssen. Sie können bei Bedarf automatisch heruntergefahren oder wieder eingeschaltet werden.

Level 2 - Architektur

Bisher haben wir Möglichkeiten untersucht, den CO₂-Fußabdruck Ihrer Software auf der Infrastrukturebene zu reduzieren. Dies erfordert in der Regel keine oder nur wenige Änderungen am Code. Die nächste Schwierigkeitsstufe besteht darin, die Interaktion der Softwarekomponenten untereinander zu optimieren.

Verwenden Sie Microservices

Ein kleiner Service lässt sich leichter skalieren als eine monolithische Anwendung. Wenn Ihre Anwendung Teile oder Module enthält, deren Nutzung im Tagesverlauf stark variieren kann, ziehen Sie in Betracht, diese Teile in einen externen Service auszulagern. Auf diese Weise müssen Sie nicht den gesamten Monolithen skalieren. Das bedeutet jedoch nicht, dass es notwendig ist, Ihre gesamte Anwendung in Dienste aufzuteilen.

Verwenden Sie serverlose Funktionen

Serverless-Funktionen erfordern keinen eigenen Server. Bei Bedarf führt der Cloud-Anbieter den Code auf seiner Infrastruktur aus. Dadurch können sie ihre Server gleichmäßig nutzen und somit Emissionen reduzieren (siehe auch „Rechtsgröße Ihrer Infrastruktur“ im vorherigen Kapitel).

Caching nutzen

Die effizienteste Berechnung kann vermieden werden. Obwohl Caching oft nicht einfach zu implementieren ist, kann es den Ressourcenverbrauch erheblich reduzieren, wenn es korrekt eingerichtet und konfiguriert wird. 

Es gibt viele mögliche Möglichkeiten, Caching zu implementieren: In-Memory-Caching auf Code-Ebene, Response-Caching von API-Endpunkten oder Browser-Caching. Caching kommt in der Regel Websites und Anwendungen zugute, indem es sie schneller macht, was Ihre Nutzer zu schätzen wissen werden. Allerdings erfordert Caching zusätzlichen Speicher, der bei der Implementierung berücksichtigt werden muss.

Datenübertragung reduzieren

Datennetzwerke verbrauchen viel Energie, daher ist es entscheidend, die Menge der übermittelten Daten so weit wie möglich zu reduzieren. Es gibt viele Möglichkeiten, dies zu erreichen, zum Beispiel die Auswahl von Datenformaten mit der kleinsten Dateigröße oder das Vermeiden des Versendens unnötiger Daten bei jeder API-Anfrage.

Eine weitere Möglichkeit besteht darin, Kompression zu verwenden. Obwohl das Komprimieren und Dekomprimieren der Daten Energie erfordert, sind moderne Algorithmen hochoptimiert, und die eingesparte Energie übersteigt den Energieaufwand.

Implementieren Sie eine ereignisgesteuerte Architektur (EDA)

Die Implementierung einer ereignisgesteuerten Architektur (EDA) vermeidet unnötige Statusaktualisierungsanfragen zwischen den Diensten. Anstatt ständig nach Änderungen zu suchen (z. B. Long Polling), wird der Dienst durch einen Server-Push informiert, dass ein Ereignis, wie eine Datenänderung, stattgefunden hat und möglicherweise Maßnahmen erforderlich sind.

Optimieren Sie Ihre CI/CD-Pipeline

Kontinuierliche Integration ist ein wesentlicher Bestandteil des Softwareentwicklungslebenszyklus. Daher wird die CI/CD-Pipeline oft tagsüber intensiv genutzt. Aus diesem Grund sollten Sie sie auch in Ihre CO₂-Überwachung einbeziehen. 

Versuchen Sie, die Ausführungszeit der Tests zu optimieren. Nutzen Sie beispielsweise mehr CPU-Kerne und führen Sie die Tests parallel aus, sofern verfügbar. Die Reduzierung der Anzahl der Build-Abhängigkeiten oder die Verwendung kleiner Docker-Images (z. B. basierend auf Alpine Linux) kann die Ausführungszeit noch weiter verkürzen.

Wählen Sie die richtigen Werkzeuge.

Die Wahl des richtigen Werkzeugs für die Aufgabe ist immer wichtig, und das gilt ohne Ausnahme auch für die Green IT. Zum Beispiel verschwenden relationalen Datenbanken für das Logging oder Caching Ressourcen, da dafür besser geeignete Werkzeuge zur Verfügung stehen.

Zusätzliche Lektüre

Es ist erwähnenswert, dass viele Cloud-Anbieter, wie Google, Microsoft oder AWS, ebenfalls empfehlen, Software optimal in ihren Clouds auszuführen.

Level 3 - Code

Auf der nächsten Ebene werden wir schließlich den tatsächlichen Code unserer Softwareanwendung untersuchen.

Wählen Sie den effizientesten Algorithmus

Die Big O Notation beschreibt, wie die Laufzeit oder der Speicherbedarf eines Algorithmus wächst, während die Größe der Eingabedaten zunimmt. Dies ermöglicht Entwicklern, den effizientesten Algorithmus für einen bestimmten Anwendungsfall auszuwählen.

Datenbankschemata und Abfragen optimieren

Datenbanken sind leistungsstark und hoch optimiert. Auf der vorherigen Architektur-Ebene haben wir gelernt, dass sie eine sorgfältige Konfiguration benötigen, um effizient zu arbeiten.

Es liegt oft ein großes Potenzial für Leistungsverbesserungen auf der Code-Ebene vor, zu der wir auch die Datenbankschemas und -abfragen zählen. Besonders bei relationalen Datenbanken wie MySQL oder Postgres ist es wichtig, langsame Abfragen zu protokollieren und sie mit integrierten Tools wie der EXPLAIN-Anweisung zu analysieren, um wertvolle Erkenntnisse zu gewinnen, wo die Abfragen optimiert werden können.

Ein weiterer oft übersehener Punkt ist die Verwendung von Tabellenindizes, die die Ausführungszeit von Abfragen, insbesondere bei großen Tabellen, drastisch reduzieren können.

Abstraktionsschichten wie ORMs verkürzen in der Regel die Entwicklungszeit, trennen jedoch die Entwickler von der zugrunde liegenden Datenbank. 

Vereinbaren Sie Leistungsbudgets.

Fügen Sie Leistungsüberlegungen zu Ihren Akzeptanzkriterien hinzu, um die Codeeffizienz zu priorisieren. Ein Performance-Budget definiert bestimmte Grenzen abhängig vom Anwendungsfall. Zum Beispiel stellt es die maximale Ladezeit einer Website oder die Gesamtgröße aller heruntergeladenen Assets dar. Performance-Budgets können in Ihre Continuous Integration-Pipeline integriert werden und helfen Ihnen, Leistungseinbußen frühzeitig zu erkennen.

Nutzen Sie die Code-Profilierung

Profiling hilft Ihnen, langlaufende Funktionen in Ihrem Code zu identifizieren. Das Beheben dieser Engpässe kann die Ausführungszeit drastisch reduzieren und somit die Effizienz Ihrer Software erhöhen. Kommerzielle Lösungen ermöglichen es Ihnen sogar, Ihre Anwendung in Produktionsumgebungen zu profilen. 

Verwenden Sie Drittanbieter-Code mit Bedacht.

Es gibt verschiedene Drittanbieter-Pakete oder Bibliotheken, die virtually jedes Problem lösen können. Allerdings sind viele Pakete im Laufe der Zeit zunehmend funktionsreich geworden, was zu langsameren Codeausführungen und größeren Dateigrößen führt. 

Deshalb ist das beliebteste Paket, oder das, mit dem Sie am vertrautesten sind, nicht unbedingt das effizienteste. Wenn Sie ein Drittanbieter-Paket verwenden möchten, prüfen Sie nachhaltigere Alternativen, wie beispielsweise einen Code-Profilierer oder andere Leistungsbenchmarking-Tools.

Bevorzugen Sie native Funktionen

Insbesondere bei Programmiersprachen wie Python, Javascript oder PHP, die nicht kompiliert, sondern interpretiert werden, lohnt es sich zu überprüfen, ob es eine integrierte Möglichkeit gibt, ein Problem zu lösen, bevor Sie ein Drittanbieter-Paket verwenden oder Ihre eigene Lösung entwickeln. 

Diese nativen Funktionen sind möglicherweise nicht so einfach zu nutzen wie ihre Pendants, bieten jedoch in der Regel eine unvergleichliche Leistung und können helfen, Leistungsprobleme zu lösen. Zudem verringern Sie die Abhängigkeit von externem Code.

Bereinige deinen Code

Im Laufe der Zeit sammelt Software Unordnung an und wird unnötig schwerfällig. Veralteter Code sollte entfernt werden, sobald er nicht mehr aktuell ist. Weniger Code bedeutet im Allgemeinen bessere Leistung, und Sie sparen auch Zeit in der CI/CD-Pipeline durch weniger Tests und schnellere Code-Qualitätsprüfungen. Das Entfernen unnötiger Pakete reduziert die Daten, die bei jedem Update oder wenn Code bereitgestellt wird, heruntergeladen werden.

Level 4 - CO₂-Bewusstsein

Obwohl es in das Kapitel Level Two—Architecture passen würde, ist das Konzept des Carbon-Aware Computing noch sehr jung und entwickelt sich schnell weiter, weshalb wir ihm etwas zusätzlichen Raum geben möchten.

Verstehen Sie das Bewusstsein für CO₂

Während der Übergangsphase von fossilen Brennstoffen zu erneuerbaren Energien variiert die CO₂-Intensität (d.h. die "Verschmutzung" des verwendeten Stroms) je nach Verfügbarkeit von sauberen Energiequellen.

In einigen Ländern wird die Erzeugung erneuerbarer Energien gelegentlich gedrosselt, da nicht genügend Nachfrage besteht und das Stromnetz noch nicht in der Lage ist, die Energie gleichmäßig im ganzen Land zu verteilen.

Bis ausreichende Speicherkapazitäten zur Verfügung stehen und wahrscheinlich auch darüber hinaus, besteht die grundlegende Idee des Carbon Awareness darin, grüne Energie zu nutzen, wenn sie verfügbar ist, und die Nachfrage zu reduzieren, wenn die CO₂-Intensität hoch ist.

Datenquellen wie ElectricityMaps oder WattTime informieren uns über die aktuelle CO₂-Intensität in vielen Ländern. Beide Dienste bieten Web-APIs an, über die die Informationen abgerufen werden können. Andere Dienste sind regionsspezifisch, wie Energy Charts für Deutschland oder Carbon Intensity für das Vereinigte Königreich.

Wie können wir diese Informationen nutzen? Die Green Software Foundation beschreibt beispielsweise mehrere Ansätze zur Senkung der CO₂-Emissionen, die wir in den folgenden Abschnitten erörtern werden.

Kundenanforderungen gestalten

Der Begriff Demand Shaping mag auf den ersten Blick kontraintuitiv erscheinen, aber wie könnten wir die Nachfrage unserer Kunden gestalten? Mit Nachfrage bezieht sich die Green Software Foundation jedoch auf die Nachfrage nach Elektrizität und nicht auf die Nachfrage nach Produkten.

Unternehmen, die Daten wie Video oder Audio streamen, könnten beispielsweise die Standardqualität verringern, mit der die Inhalte geliefert werden, wenn die Kohlenstoffintensität hoch ist. 

Verlagern Sie Arbeitslasten in die Zukunft

Wenn die aktuelle Kohlenstoffintensität hoch ist, stehen die Chancen gut, dass der Strom in ein paar Stunden wieder grüner sein wird, abhängig von den Wetterbedingungen, da weniger fossile Kraftwerke die Lücke füllen müssen. Aber wie wissen wir, wann wieder mehr erneuerbare Energie zur Verfügung stehen wird?

Glücklicherweise bieten alle oben genannten Dienstleistungen eine Vorhersage der Kohlenstoffintensität für die nächsten 12 Stunden oder sogar länger an. Dies ist möglich, indem verschiedene Informationsarten genutzt werden, wie Wettervorhersagen oder die Tagespreise auf den Energiemärkten.

Wenn der Strom derzeit "schmutzig" ist, könnten wir in der Lage sein, Arbeitslasten aufzuschieben, bis wir wissen, dass er wieder "grüner" ist. Dieser Ansatz wird temporales Verschieben genannt. Ein großes Problem könnte darin bestehen, tatsächlich Aufgaben zu finden, die verzögert werden können. Wir werden dieses Problem im nächsten Kapitel besprechen.

Verwenden Sie grünere Standorte

Ein kurzer Blick auf die Kohlenstoffintensitätskarte der Welt zeigt uns, dass einige Länder aus verschiedenen Gründen deutlich grünere Elektrizität haben als andere. Da wir Software in der Cloud betreiben, ist es einfach, Rechenzentren weltweit zu nutzen und von deren niedrigeren CO₂-Emissionen zu profitieren.

Dieser Ansatz wird als räumliche Verschiebung bezeichnet und ist relativ einfach umzusetzen, bringt jedoch auch einige Herausforderungen mit sich. Erstens, wenn alle ihre Software in der umweltfreundlichsten Region ausführen würden, würden dort die Kapazitäten schnell überschritten, sodass es keine ganzheitliche Lösung ist. 

Zweitens haben weiter entfernte Regionen ihren Preis: Daten müssen einfach längere Strecken zurücklegen, was die Emissionen erhöht und die Latenzen steigert, was Nutzer unzufrieden machen könnte. Oft sind diese grünen Regionen teurer als andere.

Räumliches Verschieben kann die Emissionen erheblich reduzieren, ist jedoch nicht der ideale Ansatz für alle Probleme. Anwendungsfälle könnten rechenintensive Arbeitslasten umfassen, wie das Training großer Sprachmodelle.

Kennt die Probleme mit dem Carbon-Awareness.

Das Konzept des Carbon Awareness ist kein Allheilmittel, um Ihre Software umweltfreundlicher zu gestalten, da es mit einigen Herausforderungen verbunden ist. Erstens könnte eine unregulierte Anwendung in großem Maßstab unvorhersehbare Auswirkungen auf die Stabilität des Stromnetzes haben.

Eine weitere Herausforderung ist die Akzeptanz der Nutzer: Sie sind daran gewöhnt, dass ihre Handlungen direkt und sofort ausgeführt werden. Werden sie akzeptieren, ein paar Stunden zu warten, bis der Energiemix wieder grüner ist? Wir werden dieses Problem im nächsten Kapitel näher untersuchen.

Stufe 5 - Produktdesign

Mit der letzten Stufe verlassen wir den Bereich der Technologie und springen in den Bereich des Produkt- und Nutzererlebnisses. Ähnlich wie in den meisten, wenn nicht allen Branchen, können wir nicht darauf hoffen, den Klimawandel allein durch den Einsatz von Technologie zu bekämpfen. Es ist auch notwendig, zu ändern, wie wir Produkte nutzen.

Das Beispiel im vorherigen Kapitel, die Streaming-Qualität von Videos während Zeiten höherer Kohlenstoffintensität zu reduzieren, ist bereits ein Beispiel für nachhaltiges Produktdesign. Obwohl die Auswirkungen dieser Maßnahme erheblich sein können, haben wir sie auf Stufe 5 eingestuft, da sie eine umfangreiche Koordination mit anderen Abteilungen und Interessensvertretern erfordert.

Informieren Sie Ihre Nutzer.

Maßnahmen wie die Reduzierung der Video-Streaming-Bitrate sollten nicht ohne Information der Nutzer und anderer wichtiger Interessengruppen ergriffen werden. Andernfalls enden Sie mit unzufriedenen Kunden, die sich über die niedrige Videoqualität beschweren, und uninformierten Helpdesk-Mitarbeitern, die nicht anders können, als die Fehlerberichte an die Technikteams weiterzuleiten.

Benutzer zu informieren kann mit der Sensibilisierung und dem Verständnis kombiniert werden. Zum Beispiel können Sie die aktuelle Kohlenstoffintensität in Ihrer Anwendung anzeigen, indem Sie Zeiten hoher Kohlenstoffintensität signalisieren.

Geben Sie ihnen eine Wahl

Ihre Kunden sollten in der Lage sein, aktiv in CO₂- sparsende Maßnahmen einzuwilligen (oder sich abzumelden), so wie sie es gewohnt sind, z.B. bei ihren Waschmaschinen, bei denen sie einen Eco-Modus wählen können, der länger dauert, aber Energie spart. Ist es für Ihre Software-Nutzer akzeptabel, auf die Ausführung bestimmter Aufträge zu warten, wenn sie wissen, dass dies Emissionen sparen würde?

Aber denken Sie daran: Es hilft nichts, wenn Kunden aufgrund zu strenger Einschränkungen abspringen. Manchmal ist es notwendig, die Aufgabe so schnell wie möglich zu erledigen, auch wenn dies zu höheren CO₂-Emissionen führt.

Gestaltung für Nachhaltigkeit

Die Gestaltung Ihres Produkts unter Berücksichtigung von Nachhaltigkeit kann die CO₂-Emissionen erheblich reduzieren. Muss das Daten-Dashboard beispielsweise immer auf dem neuesten Stand sein und ständige Datenbankabfragen erfordern? Oder wäre der Benutzer damit einverstanden, dass die Daten ein paar Minuten alt sein können, wodurch das Backend Anfragen zwischenspeichern und somit Ressourcen sparen kann?

Andere Aspekte, wie die Verwendung anerkannter Designmuster und das Vermeiden von irreführenden, werden im Abschnitt User Experience der Web Sustainability Guidelines (WSG) 1.0 erläutert. An diesem Punkt verbindet sich Green Software Engineering auch mit Bereichen wie Barrierefreiheit oder Ethik, die zwar über den Rahmen dieses Artikels hinausgehen, jedoch dennoch von wesentlicher Bedeutung sind.

Eine Strategie definieren

Jetzt, da wir das notwendige Wissen und die Werkzeuge haben, um softwarebezogene CO₂-Emissionen zu reduzieren, müssen wir eine Strategie zur Anwendung in Ihrer Organisation festlegen. An diesem Punkt gehen wir davon aus, dass das Management bereits zugestimmt hat, Maßnahmen zu Green IT einzuführen, d.h. Sie haben die Zustimmung.

Ein guter Ausgangspunkt wäre die Analyse der Emissions- / Kosten-Daten, um die Bereiche Ihrer Infrastruktur zu identifizieren, die das größte Potenzial für Kostensenkungen und die Reduzierung von CO₂-Emissionen bieten. Sobald einige Ziele formuliert wurden, kann dies in einen Projektplan überführt werden.

Potenzielle Projekt-KPIs könnten die Gesamtemissionen in CO₂ und die Infrastrukturkosten pro Woche sein. Wenn sie über einen längeren Zeitraum verfolgt werden, zeigen sie schnell Fortschritte.

Wenn Sie die Arbeitsstunden des Projekts erfassen, können Sie am Ende des Projekts den ROI berechnen.

Halte es am Laufen

Ein einzelnes Projekt im Bereich Green IT genügt jedoch nicht. Sobald die ersten CO₂-Einsparungen erzielt wurden, ist es entscheidend, nicht stehen zu bleiben, sondern den Schwung aufrechtzuerhalten. Da sich die typische IT-Landschaft ständig verändert, sind kontinuierliche Überwachung und Analyse erforderlich, um weitere Reduktionspotenziale zu identifizieren und ebenso wichtig, um erhöhten CO₂-Emissionen, z. B. durch Konfigurationsprobleme oder einfach uninformierte Mitarbeiter, vorzubeugen.

Eine einfache Maßnahme wäre, die KPIs der Grünen IT in das regelmäßige Management-Reporting aufzunehmen. Dies hält auch die Nachhaltigkeit im Bewusstsein der Entscheidungsträger.

Erkenntnisse: Wie Sie Ihre IT dekarbonisieren können

Dieser Artikel erklärt, wie der CO₂-Fußabdruck von Software reduziert werden kann, um sie CO₂-effizienter zu gestalten. Zuerst messen Sie die Emissionen Ihrer Software-Konfiguration.

Sobald Sie zuverlässige Emissionsdaten haben, können Sie diese reduzieren, indem Sie auf den folgenden Ebenen Maßnahmen ergreifen:

Level Aktion
Ebenen 1 Vermeiden Sie unnötigen Ressourcenverbrauch.
Level 2 Verwenden Sie eine CO₂-effiziente Softwarearchitektur
Level 3 Optimierung der Softwareleistung
Stufe 4 Berücksichtigen Sie die CO₂-bewusste Softwareentwicklung
Level 5 Gestalten Sie Ihr Produkt umweltfreundlich.

Die Ebenen sind nach der Schwierigkeit der Umsetzung und dem erwarteten CO₂-Einsparpotenzial geordnet, um Ihnen eine erste Orientierung zu geben. Viele Maßnahmen der Stufe 1 sind relativ einfach umzusetzen und haben eine hohe Wahrscheinlichkeit, signifikante Emissionsreduktionen zu erreichen.

Zuletzt sollten Sie, um die Maßnahmen der Grünen IT auf Ihre Anwendung anzuwenden, eine Strategie zu deren Umsetzung festlegen. Dies könnte so einfach sein wie ein einfacher Projektplan, in dem Sie konkrete Ergebnisse definieren und den Prozess durch KPIs transparent gestalten.

Sobald Sie Ihr erstes Projekt abgeschlossen haben, muss der Prozess von Neuem beginnen, denn Green IT ist kein einmaliges Projekt, sondern ein Wandel in Denkweise und Abläufen.

Beginnen Sie noch heute die Dekarbonisierungsreise Ihres Unternehmens.Buchen Sie eine Demo, um die besten Nachhaltigkeitslösungen kennenzulernen.

Unsere Nachhaltigkeitsexperten

Bringen Sie Ihr Unternehmen auf den Weg zur Netto-Null

Unsere Nachhaltigkeitsexperten finden die richtige Lösung für Sie.
Nachhaltigkeit ist ein tiefes und weites Meer, das es zu navigieren gilt. Nutzen Sie mein Wissen und meine Intelligenz, um exponentiell zu lernen und die richtigen Ressourcen zu finden, um Ihre Argumentation zu untermauern.