Nachhaltiges Programmieren – Empfehlungen für umweltfreundliche Softwareentwicklung

In einer Welt, in der digitale Technologien tief in unseren Alltag verwoben sind, rückt die Nachhaltigkeit von Software zunehmend in den Fokus von Entwickelnden, Unternehmen und Nutzenden. Das Streben nach ökologisch verantwortungsvoller Softwareentwicklung ist nicht nur eine Antwort auf die wachsenden ökologischen Herausforderungen unserer Zeit, sondern auch ein Zeichen für eine reife, zukunftsorientierte Perspektive in der Technologiebranche. Dieser Beitrag gibt einige konkrete Tipps, wie Software nachhaltiger entwickelt werden kann.
Von   Yelle Lieder   |  Green IT Lead   |  adesso SE
19. April 2024

Nachhaltigkeit von Software zunehmend in den Fokus von Entwickelnden, Unternehmen und Nutzenden. Das Streben nach ökologisch verantwortungsvoller Softwareentwicklung ist nicht nur eine Antwort auf die wachsenden ökologischen Herausforderungen unserer Zeit, sondern auch ein Zeichen für eine reife, zukunftsorientierte Perspektive in der Technologiebranche. Dieser Beitrag gibt einige konkrete Tipps, wie Software nachhaltiger entwickelt werden kann.

 

Ganzheitliche Betrachtung der Umweltauswirkungen von Software

Die Entwicklung nachhaltiger Software erfordert eine Betrachtung weit über die Nutzungsphase hinaus, indem die Umwelteinflüsse über den gesamten Lebenszyklus berücksichtigt werden. So kann eine Technologie zwar zur Laufzeit effizient sein, jedoch im Standby oder beim Hochfahren viel Energie verbrauchen. Eine umfassende Analyse ist essenziell, um solche Konflikte aufzudecken und in der Entwicklungsphase einzuplanen, wobei Entscheidungen stets auf der Grundlage von Daten und unter Einbeziehung aller Lebenszyklusphasen getroffen werden sollten.

 

Berücksichtigung des aktuellen Strommix

Umweltbewusste Softwarelösungen reduzieren ihre Aktivitäten, wenn erneuerbare Energiequellen nicht verfügbar sind. Durch das Ausrichten der Durchführung energieintensiver Aufgaben an der Verfügbarkeit von grünem Strom können die CO2-Emissionen des Systembetriebs je nach Region um bis zu 40 % gesenkt werden. Dies kann durch zeitliche Verschiebung von Prozessen, um von günstigeren CO2-Bilanzen zu profitieren – sofern die Aufgaben nicht zeitgebunden sind – oder durch Verlagerung der Prozesse an Orte mit höherer Verfügbarkeit an erneuerbaren Energien, bei zeitkritischen Aufgaben, erreicht werden. Es wird geschätzt, dass bis zu 30 % aller Rechenaufgaben nicht zeitkritisch sind und somit für eine zeitliche Anpassung in Frage kommen. Abbildung 2 zeigt exemplarisch, wie stark die Einspeisung erneuerbarer Energien ins Stromnetz an einem Frühlingstag in Deutschland schwanken kann. Der CO2-Footprints der ausgeführten Workloads kann zwischen 13:00 und 18:00 um bis zu 27 % schwanken.

 

Verzicht auf Überdimensionierung

Eine umweltfreundliche Software zeichnet sich durch die bewusste Vermeidung von Over-Engineering aus. Indem man sich auf das Wesentliche beschränkt und nur implementiert, was unbedingt erforderlich ist, lässt sich der Verbrauch an Ressourcen deutlich senken. Dies umfasst sowohl die Wahl einer angemessenen Komplexität bei der Entwicklung und den eingesetzten Technologien als auch die Beschränkung der Funktionalitäten auf die Grundbedürfnisse. Maßnahmen, um Überdimensionierung zu verhindern, können beispielsweise die approximative Programmierung, das gezielte Aktivieren und Deaktivieren von Funktionen (Feature-Toggle) oder der Einsatz von Plugin-basierten Architekturen sein.

 

Entgegenwirken gegen technische Überalterung

 

Umweltbewusste Software zielt darauf ab, die technische Obsoleszenz zu minimieren, indem sie die Lebensdauer von Systemen verlängert und dadurch den Zyklus ständiger Neuanschaffungen durchbricht. Dieser Ansatz trägt nicht nur zum Schutz der Umwelt bei, indem er den Verbrauch von Ressourcen reduziert, sondern sorgt auch für eine verbesserte Kompatibilität mit älterer Hardware, wodurch die Nutzungsdauer verlängert wird. Die Langlebigkeit von Software wird durch sorgfältige Wartungs- und Aktualisierungsstrategien unterstützt, welche sicherstellen, dass Softwareprodukte über einen längeren Zeitraum hinweg nutzbar bleiben. Die Auswahl zukunftsfähiger Technologien, die eine dauerhafte Unterstützung und Weiterentwicklung gewährleisten, ist ebenso von großer Bedeutung. Darüber hinaus fördern Entwurfsmuster für wartbaren Code und Qualitätsmetriken, wie die Überwachung der Code-Komplexität und -Duplizität, die Nachhaltigkeit von Softwareprojekten.

 

Caching für ökologische Effizienz

Umweltfreundliche Softwarelösungen nutzen Zwischenspeicher, um bereits ermittelte Ergebnisse zu speichern und so die Häufigkeit wiederholter Vorgänge zu verringern. Es ist wichtig, dass oft benötigte Daten rasch abrufbar sind, um doppelte Berechnungen oder sogar energieintensive Prozesse in KI-Systemen zu vermeiden. Dieser Ansatz des Zwischenspeicherns findet sowohl in Browser-basierten Frontend-Anwendungen als auch in Backend-APIs und auf der HTTP-Ebene Anwendung. Durch die sofortige Verfügbarkeit von Daten, ohne sie erneut über das Netzwerk senden oder Datenbanken wiederholt abfragen zu müssen, lässt sich der Energieverbrauch in Prozessoren und Netzwerkgeräten signifikant reduzieren.

 

Effizienz durch Minimierung der Datenmenge

Eine umweltfreundliche Software zeichnet sich durch ihre Sparsamkeit im Umgang mit Daten aus. Dies bedeutet, dass sowohl die Speicherung als auch die Verarbeitung und Übertragung von Daten auf ein Minimum reduziert werden, um den Bedarf an physischer Hardware zu verringern. Dadurch wird auch der Energieverbrauch gesenkt, da weniger Rechenleistung erforderlich ist und Speichergeräte nicht ständig mit Energie versorgt werden müssen. Effektive Maßnahmen zur Reduzierung des Datenaufkommens umfassen Techniken wie Datenkompression, das Zusammenfassen mehrerer Vorgänge (Batching), die Implementierung von Filtern in APIs und die Anwendung von Seitenunterteilung (Pagination), sowohl in Benutzeroberflächen als auch in Schnittstellen. Darüber hinaus sollte in den Anwendungen selbst auch gesteuert werden, welche Daten in Abhängigkeit der verfügbaren Netzwerkverbindung wirklich übertragen werden müssen. Abbildung 1 zeigt, dass der Unterschied der Verfügbarkeit einer 3G- oder 4G-Verbindung für den Stromverbrauch einen relevanten Unterschied machen kann.

Abbildung 1: CO2-Intensität (gCO2/khW) im deutschen Energienetz am 27.03.2024

Priorisierung mobiler Endgeräte

Software, die nachhaltig konzipiert ist, gewährleistet eine hohe Funktionalität und Benutzerfreundlichkeit auf mobilen Geräten. Indem Entwickelnde das Prinzip „Mobile First“ verfolgen, entstehen nicht nur Lösungen, die während der Laufzeit effizient sind. Die breite Kompatibilität mit verschiedenen Geräten fördert zudem die Langlebigkeit von Hardware, da Nutzende nicht gezwungen sind, für die Verwendung neuester Software ständig neue Geräte anzuschaffen. Mobile Geräte verfügen häufig über begrenzte Ressourcen, was eine besonders effiziente Nutzung von Prozessorleistung, Speicher, Datenübertragungsraten und Bildschirmgrößen erfordert.

 

Optimierung durch angepasste Algorithmen und Datenstrukturen

Für eine umweltbewusste Softwareentwicklung ist der Einsatz von Algorithmen und Datenstrukturen, die sowohl effizient als auch auf den spezifischen Anwendungsfall zugeschnitten sind, entscheidend. Anstatt auf allgemeingültige Lösungen zurückzugreifen, ermöglicht die Auswahl spezifischer, an den Kontext angepasster Optionen eine optimierte Ressourcennutzung. Dies wird besonders relevant, wenn es um Skalierung geht. Die Neigung, mehrfach verschachtelte Listen oder Arrays einzusetzen, wo eigentlich spezialisierte Datenstrukturen wie Hash-Tabellen eine effizientere Wahl darstellen würden, ist verbreitet. Ebenso wird oft zu Standard-Sortieralgorithmen gegriffen, ohne die spezifischen Eigenschaften der zu sortierenden Daten zu berücksichtigen. Dies führt zu einem unnötigen Verbrauch von CPU-Leistung und Speicherplatz, was den Gesamtressourcenverbrauch des Systems erhöht.

 

Einfachheit als Kernprinzip

Die Grundprinzipien nachhaltiger Software manifestieren sich in der Einfachheit ihrer Gestaltung und Umsetzung. Einerseits profitiert nachhaltige Software von der Nutzung einfacher, erprobter Lösungen, die ressourceneffizienter sind als komplexe Eigenentwicklungen. Oftmals ist die Verwendung vorhandener Bibliotheken nicht nur zeitsparend, sondern auch ökologisch vorteilhafter. Bei der Wahl der Technologien empfiehlt sich ebenfalls eine Beschränkung auf das Notwendige; so ist beispielsweise das leichtgewichtigere JSON häufig ausreichend und ressourcenschonender als das umfangreichere XML.
Andererseits erfordert die Implementierung nachhaltiger Praktiken, wie die Berücksichtigung von Load Shifting, keinen übermäßigen Zusatzaufwand. Viele der nachhaltigen Ansätze lassen sich nahtlos in bestehende Prozesse integrieren, wie etwa das Auslagern von Batch-Jobs. Die Berücksichtigung von Nachhaltigkeitskriterien führt häufig nicht nur zu geringeren Betriebskosten, sondern kann auch die allgemeine Qualität der Software, ihre Wartbarkeit und Benutzerfreundlichkeit verbessern.

Abbildung 2: CO2-Emissionen für HD-Videostreming

Nachhaltigkeit als Leitprinzip in der Softwareentwicklung

Indem Entwickelnde einfache, bewährte Methoden priorisieren, unnötige Komplexität vermeiden und stets mit Blick auf die Ressourceneffizienz entscheiden, tragen sie zu langlebigeren und ökologisch verantwortungsvolleren Softwareprodukten bei. Die Herausforderung liegt nun darin, diese Prinzipien in die alltägliche Entwicklungspraxis zu integrieren und kontinuierlich nach innovativen Ansätzen zu suchen, die sowohl die technische als auch die ökologische Leistungsfähigkeit weiter steigern. Der Weg hin zu einer nachhaltigeren Softwarelandschaft ist ein fortlaufender Prozess, der sowohl kreative Lösungen als auch ein Umdenken in der Herangehensweise an Softwareentwicklung erfordert.

Yelle Lieder ist Green IT Lead bei adesso. Als Teil des CIO Advisory Competence Centers konzentriert er sich auf Strategien zur Messung und Reduzierung der Umweltauswirkungen von IT-Systemen sowie auf den Einsatz von Technologie zur Erreichung von Nachhaltigkeitszielen.

Um einen Kommentar zu hinterlassen müssen sie Autor sein, oder mit Ihrem LinkedIn Account eingeloggt sein.

47156

share

Artikel teilen

Top Artikel

Ähnliche Artikel