Was ein Softwareunternehmen tun kann, um seinen CO2-Fußabdruck zu reduzieren

Da die Welt sich zunehmend der Auswirkungen des Klimawandels bewusst wird, ergreifen viele Unternehmen Maßnahmen, um ihren CO2-Fußabdruck zu reduzieren, und die Softwareunternehmen bilden dabei keine Ausnahme

Umwelt

Vieolo ist in erster Linie ein Softwareunternehmen und es ist wahrscheinlich, dass Sie, der Leser dieses Artikels, ebenfalls in der Softwarebranche tätig sind.

Der Fortschritt in der Softwarebranche war ein zweischneidiges Schwert für die Umwelt. Einerseits hat die Softwarebranche kollektiv unvergleichliche Effizienz in viele Aufgaben gebracht und den Gebrauch von Billionen von Blatt Papier verhindert. Andererseits haben wir aktiv daran gearbeitet, den Datenverbrauch des durchschnittlichen Bürgers zu erhöhen, was wiederum eigene Umweltprobleme in Form von Elektroschrott und Energieverbrauch verursacht hat.

Ungeachtet der insgesamt positiven Wirkung unserer Arbeit müssen wir anerkennen, dass unsere Operationen und Produkte negative Auswirkungen auf die Umwelt haben, und wir alle sollten uns verpflichten, unseren Teil dazu beizutragen, unseren CO2-Fußabdruck zu reduzieren, so klein er auch sein mag.

Wir verstehen, dass unser CO2-Fußabdruck im Vergleich zu anderen Unternehmen und Branchen vielleicht nur ein Tropfen auf den heißen Stein ist, aber dennoch haben wir versucht, seit Anfang 2022 die folgenden Strategien zu übernehmen.


Prävention statt Kompensation

Während die Kompensation unseres Energieverbrauchs durch CO2-Zertifikate oder andere Mechanismen ein wichtiger Bestandteil unserer allgemeinen Nachhaltigkeitsstrategie sein kann, sollte die Reduzierung unseres Energieverbrauchs oberste Priorität haben.

Es gibt grundlegende Probleme mit dem aktuellen Ansatz zur CO2-Kompensation. Die Wirksamkeit der CO2-Kompensation hängt von der Annahme ab, dass das Kompensationsprojekt ohne die Kompensationsinvestition nicht stattgefunden hätte. Dies ist jedoch schwer zu beweisen, und es gab viele Fälle, in denen sich herausstellte, dass Kompensationsprojekte auch ohne Kompensationsfinanzierung umgesetzt wurden.

Darüber hinaus gibt es derzeit keine allgemein anerkannten Kriterien für ein erfolgreiches CO2-Kompensationsprojekt. Die Wirksamkeit eines Projekts hängt hauptsächlich von den Behauptungen des Anbieters ab und die meisten Unternehmen können deren Wirksamkeit nicht unabhängig überprüfen. Infolgedessen ist es zum Zeitpunkt der Abfassung des Dokuments eine Frage des Zufalls, wenn man ein Kompensationsprojekt auswählt.

In den meisten Fällen kümmern sich Unternehmen nicht um die Umweltauswirkungen und beteiligen sich an einem CO2-Kompensationsprojekt entweder, um regulatorische Anforderungen zu erfüllen, oder als Publicity-Gag, obwohl solche PR-Aktionen in der Regel keinen Nutzen für das öffentliche Image der Unternehmen haben.

Auch wenn echte Ausgleichsprogramme ihre Vorteile haben, sollten wir uns zunächst darauf konzentrieren, unseren Energieverbrauch zu senken, anstatt zu versuchen, dessen Schäden nachträglich auszugleichen.

Natürlich betrifft ein großer Teil der Energie, die wir verbrauchen, allgemeine Operationen, die anderen Unternehmen ähnlich sind, wie die Energie, die in unseren Büros und beim Transport verbraucht wird. Hier konzentrieren wir uns auf die Energiesparstrategien, die einzigartig für Softwareunternehmen sind.


Programmiersprachen und Werkzeuge

Das Ausführen eines Stückes Code erfordert Energie, und es besteht eine gute Chance, dass die Energie, die Ihr Code verbraucht, aus fossilen Brennstoffen gewonnen wird. Die Energie, die unser Code benötigt, wird hauptsächlich für Verarbeitungsleistung (CPU, GPU usw.) und RAM aufgewendet. Indem wir die CPU- und Speichernutzung senken, können wir sicher annehmen, dass wir eine geringere Menge an Energie verbrauchen.

Die Energiemenge, die unser Code verbraucht, hängt stark von der von uns verwendeten Programmiersprache ab. Im Allgemeinen verwenden interpretierte Sprachen (die auf einer Laufzeitumgebung beruhen) und solche mit einem Garbage Collector mehr RAM und CPU im Vergleich zu denen, die kompiliert sind und keinen Garbage Collector haben.

Zum Beispiel verwendet ein einfaches Python-Programm viel mehr CPU und RAM als ein ähnliches Programm, das in C geschrieben wurde, da das Python-Programm den Python-Interpreter hochfahren und verwenden muss, während das C-Programm keinen solchen Overhead hat.

Auch wenn wir sicher annehmen können, dass Sprachen wie C oder Rust energieeffizienter sind als Sprachen wie Javascript und Python, ist die Quantifizierung dieser Energieeffizienz ziemlich schwierig. Die zuverlässigste Informationsquelle ist eine einzelne Studie, die von Forschern der Universität Minho in Portugal durchgeführt wurde. Diese Studie behauptet, dass Javascript und Python zum Beispiel etwa 4- bzw. 75-mal mehr Energie verbrauchen als C und Rust.

Auch wenn wir über die Genauigkeit dieser Messung streiten können, wurde die allgemeine Theorie immer wieder bestätigt, sowohl in kleinen als auch in großen Setups. Zum Beispiel hat Discord einen seiner Dienste, der zuvor in Go geschrieben war, in Rust neu geschrieben. Obwohl Go bereits eine performante Sprache ist, gelang es der Rust-Implementierung, die Go-Implementierung in jeder Metrik zu schlagen, während der Gesamtverbrauch von Speicher und CPU gesenkt wurde.

Die Verwendung von Programmiersprachen und Werkzeugen, die nicht auf Interpretern und Laufzeitumgebungen basieren, gehört zu den zuverlässigsten Wegen, den Energieverbrauch in der Softwarebranche zu senken.

In kleinem Maßstab ist der Unterschied im Energieverbrauch zwischen den effizientesten und am wenigsten effizienten Sprachen vernachlässigbar. Der Energieunterschied zwischen einem kleinen Python und einem Rust-Programm, das auf Ihrem lokalen Computer läuft, ist so gering, dass Sie ihn wahrscheinlich nicht einmal messen können.

Ungeachtet des vernachlässigbaren Unterschieds in kleinem Maßstab verlassen sich Entwickler jedoch auf den bereits geschriebenen Code von anderen, während der von ihnen geschriebene Code als Grundlage und technischer Schuldenberg für zukünftige Projekte enden kann. Zum Beispiel schuf Brendan Eich 1995 Javascript für Netspace 2, angeblich innerhalb von 10 Tagen, um einige grundlegende Funktionalitäten für Websites zu ermöglichen. Im Jahr 2023 hat sich Javascript zur am häufigsten genutzten Programmiersprache entwickelt. Auch wenn die Wahrscheinlichkeit sehr gering ist, könnte das Projekt, an dem Sie gerade arbeiten, letztendlich auf Millionen von Geräten laufen.

Indem wir eine Programmiersprache verwenden, nehmen wir aktiv an der Entwicklung und dem Aufbau ihres Ökosystems und ihrer technischen Schulden teil. Indem wir bewusster effizientere und leistungsstärkere Sprachen wählen, die möglicherweise außerhalb unserer Komfortzone liegen, können wir sicherstellen, dass unser Code einen geringeren CO2-Fußabdruck hat.

Das bedeutet jedoch nicht, dass wir alle Python, Ruby und Javascript aufgeben und anfangen sollten, in Rust oder C zu schreiben. Jede dieser Werkzeuge wurde aus einem bestimmten Grund geschaffen und hat ihre eigenen Anwendungsfälle.

Neben der Energie, die von der finalen Anwendung verbraucht wird, verbrauchen wir Entwickler auch eine nicht unbedeutende Menge an Energie bei der Entwicklung besagter Anwendung. In groß angelegten Anwendungen ist die Energie, die während des Entwicklungszyklus verbraucht wird, wahrscheinlich unbedeutend im Vergleich zur Energie, die zur Ausführung der Anwendung benötigt wird. In manchen Fällen kann jedoch die Energie, die Sie verwenden, um in einer komplexeren Sprache wie Rust zu schreiben und zu debuggen, so hoch sein, dass Sie von vornherein besser mit Python bedient sind.

Außerdem sind Sie aufgrund der bestehenden Grundlagen und Codebasen in bestimmten Situationen gezwungen, eine bestimmte Sprache zu verwenden. Wenn Sie eine Website erstellen, müssen Sie Javascript verwenden, da es die Hauptsprache ist, die Browser ausführen. Selbst wenn Sie eine andere Programmiersprache verwenden, wird Ihr Code zuerst in Javascript übersetzt. Sie können auf einer Website über Web Assembly Sprachen wie C oder Rust verwenden, aber es sei denn, Sie haben einen spezifischen Anwendungsfall, wären Sie mit Javascript besser bedient.


Wählen Sie effiziente Hardware

Obwohl die Softwarebranche oft nur begrenzten Einfluss auf die Entwicklung von Hardware hat, haben wir mehr Macht in unseren Händen, als wir denken.

Auch wenn wir von Hardware-Anbietern abhängig sind, um unseren Code auszuführen, hängt der kommerzielle Erfolg eines Hardwareprodukts stark von der verfügbaren Software ab, die es ausführen kann. Egal wie gut ein Hardwarestück ist, es ist absolut nutzlos, wenn es keine kompatible Qualitätssoftware gibt. Wenn wir also entscheiden, unsere Zeit und Energie darauf zu verwenden, Software zu schreiben, die mit bestimmter Hardware kompatibel ist, tragen wir zu ihrem finanziellen Erfolg und zur Langlebigkeit ihres Designs bei.

Wenn wir die Möglichkeit haben, die notwendige Hardware auszuwählen (und bereitzustellen), um unseren Code auszuführen, sollten wir uns bemühen, die energieeffizientesten Produkte auszuwählen.

Als ein Beispiel sind ARM-Prozessoren energieeffizienter als ihre x86-Pendants. Eine Forschung von zwei brasilianischen Forschern kam zu dem Schluss, dass ARM-basierte SOCs, wenn sie für HTTP- und SQL-Server verwendet werden, 3 bis 4 mal energieeffizienter sind als x86-Systeme. Indem wir uns entscheiden, Software für und zur Unterstützung von ARM-basierten SOCs zu schreiben, anstatt für x86, tragen wir zum finanziellen Erfolg und zur Weiterentwicklung energieeffizienterer Hardware bei.


KI nutzen, wenn sie wirklich benötigt wird

Die Fortschritte in der Künstlichen Intelligenz gehören zu den größten Errungenschaften der modernen Technik und lösen einzigartige Probleme, die konventionelle Architekturen nicht lösen können.

Um ein KI-Modell zu erstellen, müssen wir einen enormen Datensatz analysieren, aufbereiten und verarbeiten. Das KI-Modell verwendet die Analyse des Datensatzes, um eine bestimmte Aufgabe zu erfüllen, wenn es mit einem neuen Datenelement konfrontiert wird, das noch nie zuvor gesehen wurde. Dieser Prozess wird als Training bezeichnet.

Das Trainieren eines KI-Modells ist ein sehr energieintensiver Prozess. Laut Forschung von der University of Massachusetts Amherst kann das Training eines einzelnen KI-Modells so viel CO2 ausstoßen wie die Herstellung und Nutzung von fünf Autos in deren Lebensdauer.

Bevor wir über das Training eines neuen KI-Modells nachdenken, müssen wir uns zwei Fragen stellen. Wenn die Antwort auf beide Fragen nein lautet, sollten wir erst dann den Prozess des Trainings eines benutzerdefinierten KI-Modells beginnen.

Kann das vorliegende Problem effektiv von konventioneller Software gelöst werden? Wenn ja, sollten wir uns an die konventionelle Software halten. Eine konventionelle Lösung ist fast immer energieeffizienter als ein KI-Modell und selbst wenn die Lösung weniger effizient ist als ein trainiertes KI-Modell, könnte die Lösung nie genug verwendet werden, um die beim Training verbrauchte Energie zu übersteigen.

Kann das Problem effektiv durch ein vortrainiertes KI-Modell gelöst werden? Wenn ja, sollten wir ein vortrainiertes Modell verwenden. Im Laufe der Jahre haben viele Entwickler verschiedene KI-Modelle trainiert, um gängige Probleme auf akzeptablem Niveau zu lösen. Die Verwendung eines vortrainierten Modells spart die enorme Energiemenge, die erforderlich ist, um ein Modell von Grund auf zu trainieren.

Der Energieverbrauch des Trainingsprozesses gehört zu den wichtigen Herausforderungen, die die Technologiebranche, einschließlich uns, in den kommenden Jahren lösen muss.


Haben Sie einen sinnvollen Produktentwicklungsprozess

Wir Entwickler werden genauso von den Hypes der neuen Technologie beeinflusst wie jede andere Gruppe von Menschen. Andererseits schreiben wir alle Software, von der wir hoffen, dass sie von vielen Menschen genutzt wird, sei es aus wirtschaftlichen oder persönlichen Gründen.

Im Laufe der Jahre hat die Softwarebranche versucht, einige der trendigen Technologien in die von ihnen entwickelten Produkte einzufügen oder zu integrieren. Irgendwann hatte alles ein Element von Blockchain oder versuchte dezentralisiert zu sein. Zu einem anderen Zeitpunkt wurde alles in Javascript geschrieben. Derzeit hat alles eine generative KI oder ist „KI-gesteuert“, obwohl die Hinzufügung von KI völlig sinnlos sein könnte. In vielen Fällen bedeutet die Hinzufügung dieser trendigen Features nicht, dass das Projekt erfolgreich oder langlebig ist. Tatsächlich kann der Effekt das Gegenteil sein.

Das Scheitern und die Verzögerung eines Projekts bedeutet, dass die gesamte Energie und die durch die Entwicklung des Produkts verursachte Verschmutzung umsonst waren und die Probleme, die sie zu lösen versuchten, ungelöst bleiben. Indem wir einen sinnvolleren Produktentwicklungsprozess haben, anstatt trendige Features zu integrieren, um einen kurzfristigen Hype zu erzeugen, erhöhen wir die Lebensfähigkeit unserer Produkte und tragen langfristig dazu bei, unseren CO2-Fußabdruck zu reduzieren.


Ihre Interessen stimmen mit der Umwelt überein

Neben den offensichtlichen Vorteilen der Reduzierung unseres CO2-Fußabdrucks liegt es tatsächlich in unserem eigenen Interesse, dies zu tun. Die meisten der oben besprochenen Maßnahmen sparen uns auch Geld und/oder verbessern unsere Produkte.

Die Reduzierung des Arbeitsspeicher- und CPU-Verbrauchs unserer Anwendung ermöglicht es uns, unseren Code mit günstigeren Hardware- oder Cloud-Infrastrukturen auszuführen. Ein energieeffizienteres System senkt unsere Energiekosten. Wenn wir uns auf die Kernfunktionen unserer Produkte konzentrieren, anstatt unnötige Technologien zu integrieren, senken wir die Entwicklungskosten unserer Produkte und unterstützen deren langfristigen Erfolg.

Einige dieser Ideen umzusetzen, ist leichter gesagt als getan, aber wir in der Softwarebranche müssen unseren Teil dazu beitragen, unseren negativen Einfluss auf die Umwelt und das Klima zu vermeiden und zu mildern.