Ernst & Munsch UG (haftungsbeschränkt)
Green Coding: Nachhaltige Software durch CO2-Reduktion
Frankfurt (ots)
Der Klimawandel ist die größte Herausforderung, vor der die Menschheit im 21. Jahrhundert steht. Wenn der Energieverbrauch und die CO2-Emissionen nicht nachhaltig reduziert werden, droht in absehbarer Zeit eine globale Katastrophe. Überschwemmungen, extreme Hitzeperioden und andere Wetterkapriolen weisen ebenso wie die Zunahme nahezu unbewohnbarer Regionen in Ländern des globalen Südens darauf hin, dass eine kritische Grenze bereits jetzt erreicht ist. Die europäischen Klimaziele sehen vor, innerhalb der EU bis 2050 Klimaneutralität zu realisieren. Bis 2030 sollen sich die CO2-Emissionen im Vergleich zu 1990 um 55 Prozent vermindern. Noch ehrgeizigere Ziele setzt sich das novellierte deutsche Klimaschutzgesetz: Der CO2-Ausstoß soll sich hierzulande bis 2030 um 65 Prozent vermindern. Um diese Ziele zu erreichen, sind Aktivitäten in allen wirtschaftlichen und gesellschaftlichen Bereichen nötig. IT und Softwareentwicklung sind hier eingeschlossen. Durch grüne IT und Green Coding lassen sich beträchtliche Energieeinsparungen bewirken. Eine nachhaltige Softwareentwicklung spielt in diesem Kontext eine exponierte Rolle.
Was ist Green Coding?
Eine nachhaltige, energiesparende und umweltfreundliche Software-Entwicklung (Green Coding) - und grüne IT werden oft miteinander gleichgesetzt. In der Praxis gibt es zwischen diesen beiden Bereichen jedoch wesentliche Unterschiede: Green Coding bezieht sich explizit auf den Bereich der Software. Zentrale Handlungsfelder in diesem Rahmen sind die Bereiche der Software-Architektur, der einzelnen Software-Komponenten sowie der Betriebsplattformen für den Code. Grüne IT bezeichnet demgegenüber den Betrieb von Hardware mit ökologisch erzeugtem Strom aus erneuerbaren Energien sowie einen generell energiesparenden Hardware-Einsatz.
Grüne IT und Green Coding hängen eng zusammen
Dass die Digitalisierung CO2-Emissionen reduziert, ist unter Experten unbestritten. Sie hilft damit auch an entscheidender Stelle mit, gesetzliche Emissionsvorgaben zu erfüllen. Die durch das deutsche Klimaschutzgesetz vorgegebene Emissionsreduktion zwischen 2022 und 2030 beläuft sich in absoluten Zahlen auf 300 Millionen Tonnen CO2. Eine Studie des Branchenverbandes BITKOM e. V. kommt zum Ergebnis, dass sich allein die durch die Digitalisierung eingesparte Emissionsmenge auf bis zu 120 Millionen Tonnen CO2 belaufen könnte. Hierzu tragen beispielsweise die Automatisierung von Produktionsanlagen, smarte Verkehrssteuerung und Logistik oder Online-Banking bei. Allerdings muss die Etablierung von Digitalprozessen dafür nachhaltig erfolgen, zumal das Wachstum der IT ebenfalls den Energieverbrauch in die Höhe treibt. Ihr Anteil am Gesamtstromverbrauch in Deutschland liegt derzeit (Status Anfang 2022) bei etwa drei Prozent. Bis 2030 wird er das Doppelte betragen.
Grüne IT und Green Coding erfordern eine darauf abgestimmte Gestaltung der gesamten Unternehmensarchitektur, um den ökologischen Fußabdruck der Organisation zu reduzieren. Einen wesentlichen Beitrag hierzu leisten das Etablieren grüner Rechenzentren und der Betrieb von Software in grünen Clouds. Ökologischen Prinzipien entsprechen Rechenzentren und Datenverarbeitung vor allem dann, wenn es möglich ist, sie vollständig in die Cloud zu verlagern. Im Vergleich zu firmeneigenen Rechenzentren sind cloudbasierte Server um bis zu 93 Prozent energieeffizienter und um bis zu 98 Prozent CO2-effizienter. Bei stationären Rechenzentren in der Firma helfen eine sinnvolle Nutzung der Abwärme - beispielsweise in Form von Heizungsenergie - und eine Stromversorgung aus erneuerbaren Energien dabei, IT-bedingte Emissionsbelastungen zu begrenzen. Im Detail können hierzu verschiedene Maßnahmen einen Beitrag leisten. Hierzu gehören unter anderem:
- Die Planung komplexer Berechnungen für Zeiten, in denen viel Ökostrom verfügbar ist.
- Die Nutzung unternehmenseigener Photovoltaikanalagen für die Stromversorgung des Rechenzentrums.
- Die Priorisierung von Green Coding in der Entwicklung und Ausgestaltung der IT-Architektur des Unternehmens.
Unterhalb der Ebene der IT-Unternehmensarchitektur können auch Subsysteme oder Komponenten einen relevanten Beitrag zur Verminderung von CO2-Emissionen leisten. Priorisiert werden sie nach ihrem aktuellen Energiebedarf und den Einsparungen, die durch eine Optimierung möglich sind.
Priorisierung von Green Coding
Green Coding zielt in diesem Kontext darauf ab, die Software selbst effizienter zu gestalten, um den Verbrauch von Strom und damit auch CO2-Emissionen zu reduzieren. Welche Relevanz Green Coding in der Praxis besitzt, verdeutlicht das folgende Beispiel: Wenn ein Laptop an 200 Arbeitstagen acht Stunden täglich läuft, entsteht hierdurch ein jährlicher CO2-Ausstoß von 88 Kilogramm. Durch CO2-effizientere Hardware lässt sich diese Menge weiter reduzieren. Bei Software wirkt sich durch die Zahl der Anwender dagegen ein potenziell immenser Skalierungsfaktor aus. Beispielsweise gibt Netflix an, dass eine Stunde Video-Streaming pro Nutzer einen CO2-Ausstoß von 100 Gramm erzeugt - wer den Dienst tagtäglich für zwei Stunden nutzt, erzeugt damit jährliche CO2-Emissionen in Höhe von 73 Kilogramm, der allerdings auch Millionen Nutzer hochgerechnet werden muss. Wenn ein Netflix-Entwickler in der Lage wäre, den CO2-Ausstoß pro Nutzerstunde von 100 Gramm auf 97 oder 95 Prozent zu reduzieren, würde hieraus weltweit eine Emissionsreduktion von sehr großem Umfang reduzieren.
Ein solches Szenario lässt sich auch auf die Entwicklung und Nutzung von Unternehmenssoftware übertragen. Damit Green Coding tatsächlich klimarelevant wird, ist es unternehmensweit als nichtfunktionale Anforderung (NFR - non-functional requirement) mit hoher Priorität zu definieren. Hieraus können jeweils konkrete Detailanforderungen sowie Best Practices für Entwickler und IT-Architekten abgeleitet werden. Zu einem gemeinsamen Verständnis von Green Coding tragen Schulungsprogramme für alle beteiligten Personen bei, die sich idealerweise an konkreten Praxisbeispielen orientieren.
Die Priorisierung von Green Coding kann einer einfachen Regel folgen: Im Fokus stehen dabei jeweils die firmeneigene Software mit dem höchsten potenziellen Energieverbrauch. Die Anzahl der realen oder potenziellen parallelen Nutzer ist für entsprechende Projekte das entscheidende Auswahlkriterium.
Anforderungsanalyse für grüne IT und Green Coding
Die Optimierung der Unternehmens-IT, einzelner Hardware-Systeme oder Komponenten sowie der eingesetzten Software beginnt immer mit der Messung des aktuellen Stromverbrauchs. Daran schließt sich eine Anforderungsanalyse an. Im Hinblick auf Softwareprojekte gehört hierzu auch, energieintensive Anforderungen wie hochdynamische Inhalte oder die Datenverarbeitung in Echtzeit kritisch zu hinterfragen, um Lastspitzen so weit wie möglich zu vermeiden. Selbstverständlich muss auch im Rahmen einer grünen Softwarenentwicklung in Absprache mit den internen oder externen Nutzern der Programme ein sinnvolles Gleichgewicht zwischen funktionalen Anforderungen und der Senkung des Energieverbrauchs gefunden werden.
Prinzipien und Entwicklungsanforderungen im Green Coding
Für die praktische Implementierung von Green Coding sind die folgenden Prinzipien und Entwicklungsanforderungen von entscheidender Bedeutung. Ihre Anwendung zielt jeweils darauf ab, den durch Software erzeugten Energiebedarf in relevantem Umfang abzusenken.
Effizienter Code mit optimalen Algorithmen
Software beruht grundsätzlich auf mathematischen Algorithmen. Der wichtigste Optimierungsansatz im Green Coding besteht darin, den für die Einsparung von Energie und die Reduktion von CO2-Emissionen am besten geeigneten Algorithmus zu entwickeln und praktisch anzuwenden. Im ersten Schritt sollten Softwareentwickler prüfen, ob vorhandene Algorithmen diese Aufgabe erfüllen oder sie mit dieser Zielstellung weiterentwickelt werden können. Die Entwicklung und Optimierung neuer Algorithmen sind demgegenüber unter wirtschaftlichen, aber auch ökologischen Aspekten deutlich aufwändiger und teurer. Sie sollten auch unabhängig von den Anforderungen an Green Coding in der Unternehmenspraxis weitgehend vermieden werden.
Vermeidung unnötiger Round-Trips
Bei der Vermeidung unnötiger Round-Trips geht es darum, die Zahl der Serveranfragen auf ein funktional erforderliches Mindestmaß zu reduzieren. Für jede Anfrage sollte daher abgewogen werden, ob sie tatsächlich nötig ist. Im Rahmen von Green Coding ist Software somit auch in dieser Dimension zu optimieren.
Caching
Durch das Zusammenfassen von Serveranfragen und Zwischenspeicherungen von Anfragen auf dem Client trägt effizientes Caching in hohem Maße dazu bei, unnötige Round-Trips innerhalb des Netzwerks sowie teure und energieintensive Zugriffe auf Festplatten oder Datenbanken zu vermeiden. Caches, die für häufige Anfragen eingerichtet werden, senken den Energieverbrauch von Software. Gleichzeitig optimieren sie ihre Performance.
Optimiertes Datenvolumen
Zur Einsparung von Ressourcen trägt auch die Optimierung des Datenvolumens bei. Die verschiedenen Dateiformate sind in unterschiedlichem Umfang datenintensiv. CSV verbraucht weniger Ressourcen als Excel, YAML oder JSON erzeugen ein geringes Datenvolumen als XML. Auch die Wahl der API kann erheblichen Einfluss auf die CO2-Emissionen haben.
Komprimierte Netzwerkkommunikation
Ebenso spart das Komprimieren von Daten Bandbreite, Strom und Übertragungskosten. Bei der Übertragung von Bildern ist im Green Coding neben der Komprimierung auch der Verzicht auf verlustbehaftete Formate wie JPEG, AAC oder AV1 von Bedeutung.
Datenbankindizes
Indizes auf Tabellen und folglich auch auf Datenbankeinträge gehören zu den Standards einer zeitgemäßen IT-Architektur. In der Praxis wird jedoch noch häufig Software angewendet, die auf die Indizierung von Datenzugriffen verzichtet. Abhängig von den genutzten Datenmengen steigen beim Verzicht auf Datenbankindizes die Zugriffszeit sowie die CPU- und IO-Belastung. Hieraus resultiert ein hoher Energieverbrauch mit entsprechenden Konsequenzen für den Ausstoß von CO2-Emissionen.
Optimierte Ressourcennutzung durch Konfiguration und dynamische Skalierung
Erhebliche Energieeinsparungen lassen sich durch eine optimale Auslastung der Hardware erzielen. Ein gegenteiliger Effekt ergibt sich aus einer zu großen Planung von Systemen. Ein Beispiel dafür sind Virtual Machines (VM), die seit Mitte der 2000er Jahre durch Open-Source-Lösungen wie VirtualBox einen starken Aufschwung erlebten. Allerdings wird durch eine VM ein komplettes Betriebssystem inklusive aller Neben- und Hintergrundprozesse auf den Host emuliert, was einen hohen Ressourcen- und Energieverbrauch verursacht. Inzwischen befinden sich deutlich leichtgewichtigere Lösungen auf dem Markt, die auf einer Container-Orchestrierung basieren. Eine entsprechende Konfiguration solcher Systeme ermöglicht eine optimierte Ressourcennutzung durch dynamische Skalierung. Wenn die im Rahmen der Konfiguration festgelegten Ober- oder Untergrenzen überschritten werden, erfolgt eine automatische Skalierung des Systems. Bei Anpassungen nach oben ist wichtig, dass die Limitierungen der Hardware eingehalten werden, um unerwünschte Reaktionen auszuschließen.
Im Fokus einer optimierten Ressourcennutzung steht die Minimierung von Leerlaufzeiten. Ein Server mit ungenutzten Kapazitäten vernichtet Kapital und Energie. Cloud-Computing kann vor diesem Hintergrund große Energieeinsparungen bewirken. Public-Cloud-Systeme folgen einem hochgradig modularen Aufbau, der eine präzise Steuerung der Auslastung unterstützt. AWS, die Google Cloud oder Microsoft Azure erreichen eine Standardauslastung von rund 65 Prozent. Zum Vergleich: Stationäre Rechenzentren sind meist nur zu zwölf bis 18 Prozent ausgelastet.
Zero-Waste-Code
Unter die grundsätzliche Anforderung effizienten Codes fällt auch, Code-Verschwendung zu vermeiden. 90 Prozent der marktüblichen Software enthält heute Open-Source-Code, was prinzipiell zu begrüßen ist, da hierdurch die Erfordernis eigener Entwicklungen sinkt. Allerdings passt Open-Source-Code nicht immer perfekt zu einem durch die Software zu lösenden Problem. Redundante Komponenten vergrößern Artefakte und verlangsamen damit die Erstellung, Verteilung und den Starts von Software. Besonders relevant ist diese Problematik bei Webanwendungen, die bei jedem Aufruf den vollständigen Download des gesamten Codes erfordern. Das Entfernen von sogenanntem "totem Code" durch sogenannte Tree-Shaking-Engines trägt auch zu einer stärkeren ökologischen Profilierung von Programmen bei. Beispiele für die Erzeugung von Zero-Waste-Code sind sogenannte Module Bundlers für Java Script oder das Tool ProGuard für Java und Kotlin.
Zero-Waste-Code trägt unter anderem zur Vermeidung langer Ladezeiten bei. Die Ladezeit eines Programms korreliert direkt mit seinem Energieverbrauch. Ihre Messung ist unter anderem für die energiebezogene Bewertung von Code-Änderungen von Bedeutung.
Performance Engineering
Performance Engineering ist ein Konzept, der Leistungsanforderungen im Rahmen eines ganzheitlichen Ansatzes als wesentlichen Bestandteil der Entwicklung neuer Softwareprodukte ansieht. Auf dieser Grundlage lassen sich auch nicht-funktionale Anforderungen wie Durchsatz, Latenzzeit, Speichernutzung oder geringer Energieverbrauch erfassen. Energiebezogenes Performance Engineering erfordert die Messung des Energieverbrauchs von Software während der Entwicklung und im laufenden Betrieb. Falls er zu hoch ist, müssen gegenläufige Maßnahmen ergriffen werden. Voraussetzung für seine Anwendung ist die Definition messbarer Bedingungen für konkrete Anforderungen. Dabei kann es sich um das Gesamtsystem oder einzelne Komponenten handeln. Zudem dürfen Hardware und Software im Performance Engineering nicht voneinander isoliert betrachtet werden - vielmehr müssen auch energetische Aspekte der Hardware in die Bewertung einbezogen werden.
Die Messung des Energieverbrauchs für eine Software oder eine Softwarekomponente kann absolut oder relativ erfolgen. Absolute Messungen hängen von der Zielplattform ab - hierfür kann der Stromverbrauch des gesamten Rechners gemessen, den Stromverbrauch einzelner CPU-Zyklen auf den Gesamtverbrauch bei der Ausführung des Programms hochgerechnet oder der Stromverbrauch der CPU über eine Software ausgelesen werden. Relative Messungen beziehen sich dagegen auf die prozentuale Entwicklung des Stromverbrauchs. Sie sind einfacher und allgemeingültiger als die absolute Messung. Unabhängig von der Messmethode muss außerdem entschieden werden, wann der Stromverbrauch in einem Software-Entwicklungszyklus gemessen soll oder Integrationstests für die Ermittlung des Stromverbrauchs einzelner Komponenten nötig sind.
Sinnvoll ist, wenn ein energiebezogenes Performance Engineering sowohl in allen wichtigen Entwicklungsphasen als auch im laufenden Betrieb erfolgt, um auffällige Komponenten so früh wie möglich aufzufinden. Hierbei ist auch zu berücksichtigen, welche Anforderungen der Kunde an den Energieverbrauch und die Funktionalität der Software stellt. Durch Performance Engineering sinkt zum einen der Energiebedarf von Software. Zum anderen werden durch seine Anwendung fast immer auch Performance und Benutzerfreundlichkeit gesteigert.
Fazit
CO2-Emissionen lassen sich durch Green Coding in zahlreichen verschiedenen Dimensionen reduzieren. Den Ausschlag geben das Anwendungsfeld und die Benutzerreichweiten von Software. Die folgenden Beispiele illustrieren die Potenziale von Green Coding:
- Wenn die Inhalte einer HTML-Webseite von 200 Kilobyte auf 20 Kilobyte gesenkt werden, reduziert sich die bei jedem Aufruf zu übertragende Datenmenge auf ein Zehntel. Bei einer Million Seitenaufrufen pro Jahr werden durch die Datenkomprimierung rund zehn Kilogramm CO2 gespart. Diese Menge entspricht in etwa der lebenslangen CO2-Absorption eines Baumes.
- Eine Web-App, die pro Tag eine Million aufgerufen wird, ist in der Lage, jährlich 132 Kilogramm CO2 zu sparen, wenn ihr Start um eine Sekunde beschleunigt werden kann.
- Wenn Smartphone-Displays bei Nichtbenutzung konsequent und direkt in den Dark Mode schalten würden, würde dies - ausgehend von einer geschätzten Menge von rund einer Milliarde Smartphons - zu globalen CO2-Einsparungen im Umfang von 550.000 Tonnen führen.
- Das Training Künstlicher Intelligenzen (KI) erzeugt durch den hohen Stromverbrauch dafür derzeit astronomisch CO2-Emissionen. Beim KI-Netzwerk GPT-3, das in der Lage ist, eigenständig Texte zu erstellen, waren es 85 Millionen Tonnen CO2. Aktuell befinden sich Verfahren in der Entwicklung, die perspektivisch zu über 99-prozentigen Energieeinsparungen bei einem solchen KI-Training führen könnten.
Eine wesentliche Hürde für die Durchsetzung von Green Coding und Green Refactoring - der Überarbeitung bestehender Software unter Nachhaltigkeitsaspekten - besteht darin, dass es dafür bisher keine verbindlichen Standards gibt. Aktuell gewinnen zur Vorbereitung solcher Standards qualitative Assessments an Bedeutung, um bisher ungenutzte Potenziale aufzudecken. Hiermit korrespondiert ein wachsendes Interesse von Unternehmen, Entwicklern und Nutzern an nachhaltiger und auch ökologisch effizienter Software.
Einen solchen ökologischen Anspruch vertreten wir auch bei der Entwicklung unserer Internetplattform https://casalist.de und wenden hier die oben genannten Green-Coding-Prinzipien an.
Pressekontakt:
Devin Munsch, devin.munsch@ernstmunsch.de
Jermaine J. Ernst, jermaine.ernst@ernstmunsch.de
Original content of: Ernst & Munsch UG (haftungsbeschränkt), transmitted by news aktuell