Flyalone - Adobe Stock
Wie nachhaltigere Softwareentwicklung funktionieren kann
Wie kann energieeffiziente Entwicklung aussehen? Und wo bietet Softwareentwicklung Chancen für Nachhaltigkeit? Best Practices für eine energiesparende und nachhaltige Entwicklung.
Der Anteil digitalisierungsbedingter Emissionen steigt. Schon 2018 machten die Rechenzentren in Frankfurt mit 1,3 Terrawattstunden etwa 20 Prozent des Gesamtstromverbrauchs in der Stadt aus. Gleichzeitig steigt das Bewusstsein für die Bedeutung – und die Notwendigkeit – von Nachhaltigkeit.
Häufig wird nachhaltiger im Digitalisierungskontext allerdings im Sinne von Schadensbegrenzung verstanden: Ökostrom und Kohlendioxidausgleich durch das Pflanzen von Bäumen. Ein Beispiel: Cloud-Computing-Anbieter AWS will bis 2025 komplett auf erneuerbare Energien umstellen und bis 2040 klimaneutral sein. Gerade für Unternehmen, die im Rahmen ihrer Kerntätigkeit viel Energie verbrauchen, beispielsweise durch den Betrieb großer Serverfarmen, ist eine solche Netto-Null-Politik natürlich sinnvoll. Gleichzeitig stellt sich die Frage: Bis 2040 klimaneutral, ist das wirklich das Beste, das wir herausholen können?
Maßnahmen wie das Bäumepflanzen sind ein wichtiger Beitrag zum Klimaschutz, sie setzen aber spät an, nämlich erst dann dann, wenn die negative Auswirkung, in diesem Fall der Kohlendioxidausstoß, bereits geschehen ist. Wer den eigenen Verbrauch über Ökostrom deckt, ohne ihn zu reduzieren, und die entstehenden Emissionen kompensiert, geht davon aus, dass sich am Umfang des Energieverbrauchs nichts ändern lässt. Was aber, wenn wir früher hinschauen und versuchen, generell so energieeffizient wie möglich zu agieren?
Für Software-Provider und Entwickler eröffnet das die Frage: Wie kann Green IT aussehen? Wo bietet Softwareentwicklung Chancen für mehr Nachhaltigkeit – und worauf gilt es dabei besonders zu achten?
Nachhaltigkeit und Software – wie hängt das zusammen?
Um die Nachhaltigkeit von Software zu bewerten, müssen beispielsweise folgende Faktoren einbezogen werden:
- Energieverbrauch: Wieviel Energie kosten Entwickeln, Hosten und Ausführen der Software?
- Energieerzeugung: Aus welchen Quellen stammt der hierfür bezogene Strom?
- Lebenszyklus: Wie lange kann die Software genutzt werden? Lässt sie sich langfristig erweitern und warten?
Wichtig ist, den Prozess möglichst Ende zu Ende zu betrachten – also vom Server bis zum Endgerät der Kunden.
Nutzen Unternehmen beispielsweise eigene Data Center und halten dort Kapazitäten für besondere Events vor, zum Beispiel Black Friday oder Weihnachten, ist das ganzjährig unnötig ernergieaufwendig, denn der Grundverbrauch ungenutzter Server ist hoch. Das ist leider häufig gängige Praxis. Eine effizientere Alternative zu On-Premises-Servern bietet Cloud Computing mit optimierter Auslastung: Durch lastabhängiges Autoscaling können Ressourcen nach Bedarf allokiert oder freigegeben werden, um Energie (und Kosten) zu sparen und den Kohlendioxidausstoß zu reduzieren.
Auch die Übertragung bietet Einsparpotenzial: Im Mobilfunk konnte bereits 4G (LTE) gegenüber 3G (UTMS) enorm Energie einsparen, 5G ist nun ähnlich effizient wie Kupferkabel. Auch bei der Festnetzübetragung gibt es deutliche Unterschiede im Energieverbrauch: FTTH ist insbesondere im Vergleich zu klassischem ADSL die effizientere Technologie.
„ Natürlich haben Software-Provider und Entwickler nicht auf alle Faktoren Einfluss. Dennoch kann bei der Wahl von Tools, Services und Dienstleistern und beim Entwickeln selbst viel für mehr Nachhaltigkeit getan werden.“
Stefan Rotsch, AOE GmbH
Bedenkt man nun, dass Streaming einen Großteil des weltweiten Internet-Traffics ausmacht, wird auch die Frage nach der Auflösung relevant: Denn in 4K verbraucht das Übertragen etwa doppelt so viel Energie wie in HD, auf Mobilgeräten ist der Unterschied visuell aber oft gar nicht wahrnehmbar. Eine einfache Stellschraube, um über aktiven (denn leider wird von Anbietern standardmäßig in der maximalmöglichen Auflösung abgespielt) Verzicht bewusst Energie einzusparen.
Nachhaltige Softwareentwicklung
Natürlich haben Software-Provider und Entwickler nicht auf alle Faktoren Einfluss. Dennoch kann bei der Wahl von Tools, Services und Dienstleistern und beim Entwickeln selbst viel für mehr Nachhaltigkeit getan werden:
- Hardware, Tools und Services nach Effizienz auswählen: Hardware optimal auslasten (zum Beispiel durch Virtualisierung), Container (statt komplett virtualisiertes Betriebssystem), Function as a Service (Ausführen von Software nur nach Bedarf)
- Automatisierung durch Infrastructure as Code und Abschalten nicht benötigter Infrastruktur: Systeme bei Nicht-Nutzung herunterfahren (zum Beispiel nachts/am Wochenende)
- Demand Shaping: energieintensive Prozesse an Verfügbarkeit eneuerbarer Energien ausrichten
- Sinnvolle Auswahl oder Kombination von Programmiersprachen: wenn möglich kompilierte Sprachen (zum Beispiel Rust) verwenden, die bei Ausführung weniger Energie verbrauchen als interpretierte Sprachen
- Agiles Vorgehen: Software iterativ und Funktionen nur nach Bedarf entwickeln, um Ressourcen zu sparen
- Modularität und Qualität: durch modulare Architektur und Wiederverwendbarkeit von Modulen Erweiterbarkeit, Wartbarkeit und damit Langlebigkeit sicherstellen
- Nutzungsdauer von Hard- und Software optimieren: beim Entwickeln auf langlebige Produkte und Anwendungen setzen
- Ökostrom: Strom aus nachhaltigen Quellen beziehen
Werden Prozesse oder Anwendungen effizienter, spart das nicht nur Energie, sondern auch Zeit. Aus wirtschaftlicher Sicht verleitet das natürlich dazu, diese Ersparnis in neuen Workload zu investieren. Die Entwicklung ist damit immer noch effizienter, allerdings wird letztlich keine Energie gespart – ein Rebound-Effekt. Nachhaltigkeit bedeutet also auch, bewusst auf maximales Wachstum oder maximale Wirtschaftlichkeit zu verzichten.
Fazit: Make IT greener on our side
Nachhaltigkeit ist nicht mit einer Minimierung des Energieverbrauchs gleichzusetzen – in diesem Kontext spielen noch viele weitere Faktoren eine Rolle. Da sind beispielsweise die genutzten Rohstoffe, die Arbeitsbedingungen bei der Herstellung digitaler Endgeräte und der resultierende Elektroschrott. Heute ist es unmöglich, ein Produkt oder eine Dienstleistung wirklich ganzheitlich Ende zu Ende auf seine Nachhaltigkeit zu prüfen.
Die Digitalisierung bringt enorme Verteile und viel Potenzial auch hinsichtlich Nachhaltigkeit, sie hat allerdings auch ihren Preis. Es lohnt sich, als Entwickler oder Softwareunternehmen genau hinzuschauen, Prozesse, Tools und Arbeitsweisen zu hinterfragen und die kleinen Chancen für nachhaltiges und energiesparendes Programmieren zu ergreifen, wo sie sich bieten.
Über den Autor:
Stefan Rotsch verfügt über langjährige Expertise in der Entwicklung und Architektur komplexer Webanwendungen. Als Solution Architect bei AOE GmbH analysiert und konzipiert er Softwareprojekte im Telekommunikationsbereich und begleitet Kunden und Entwicklungsteams von der Konzeption bis zum erfolgreichen Go-Live. Seine Erfahrungen in der agilen Softwareentwicklung gibt er mit großem Erfolg in verschiedenen Vorträgen auf Konferenzen und Barcamps weiter.
Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.