In den 80er Jahren waren Hardware-Ressourcen sehr beschränkt. PCs hatten z.B. nur wenige Kilobytes Arbeitsspeicher für Anwendungen frei. Die Arbeit der Softwareentwicklerinnen und -entwickler bestand daher zu einem großen Teil darin, Software so ressourcensparsam wie möglich zu erstellen.
Über die Jahrzehnte entwickelte sich Hardware immer weiter – das Mooresche Gesetz (wonach sich die Komplexität integrierter Schaltkreise mit minimalen Komponentenkosten regelmäßig verdoppelt,) lässt grüßen. Die Cloud bietet heute Hardware-Ressourcen in fast unbeschränktem Umfang auf Knopfdruck. Warum also heute noch ressourcensparsam entwickeln?
Aktuell liegen die Schwerpunkte bei der Softwareentwicklung meist auf anderen Werten als auf Minimalismus und Nachhaltigkeit. Der Markt verlangt vielmehr schnelle und kostengünstige Umsetzung und hohe Funktionsvielfalt.
Zudem schreitet die Digitalisierung in allen Lebensbereichen unvermindert voran. Mit jedem Digitalisierungsschub benötigen wir mehr Rechenleistung, mehr Arbeitsspeicher, mehr Speicherplatz, mehr Bandbreite – mit anderen Worten mehr Hardware. Und diese Hardware verbraucht Energie für die Fertigung, den Betrieb und die Entsorgung. Auch die Cloud ist da keine Ausnahme.
Außerdem nimmt die Funktionsvielfalt immer weiter zu. Funktionalität, die vor einigen Jahrzehnten Science-Fiction war, ist im Alltag angekommen – man denke beispielsweise an die Turn-by-Turn-Navigation, die wir heute alle mit uns herumtragen. Dies wird möglich, da sich Rechenleistung und Software rasant weiterentwickeln.
All das ist aus unserem Alltag nicht mehr wegzudenken, verbraucht aber unglaubliche Mengen an Energie – ein kostbares Gut, wie die Energiekrise verdeutlicht. Bereits 2020 verbrauchten die deutschen Rechenzentren fast 3% des gesamten Energieverbrauchs in Deutschland 1) 2) 3) – Tendenz steigend.
Bei ressourcensparsamer Programmierung wie in den 80er Jahren könnte der größte Teil der heute betriebenen Rechenzentren eingespart werden. Aber ist es deswegen sinnvoll, heute wieder so zu programmieren wie in den 80ern?
Abbildung 1: Ressourcen einsparen
Wohl kaum – jedoch lohnt es sich stattdessen, den Gedanken der Effizienz und Ressourcensparsamkeit aus dieser Zeit wieder aufzugreifen und die heute verfügbaren Werkzeuge und Ressourcen möglichst effizient einzusetzen.
Green Coding – also Softwareentwicklung mit Nachhaltigkeit als definiertem Ziel – bedeutet bewusst ressourcenschonend zu entwickeln. Anders als in den 80er Jahren geht es dabei nicht um die Lauffähigkeit auf sehr begrenzten Hardware-Ressourcen. Heute wollen wir uns der Nachhaltigkeit verpflichten und damit dem Ziel, die benötigte Fachlichkeit mit möglichst geringen Ressourcen umzusetzen und zu betreiben.
Auch die Methoden müssen andere sein als damals. Beispielsweise kann die Verwendung von viel Arbeitsspeicher zu Gunsten von Lese- und Schreibvorgängen auf einem persistenten Speicher viel nachhaltiger sein – etwas, das in den 80er Jahren kaum möglich gewesen wäre. Ein anderes Beispiel ist die dynamische Skalierung in Container- und Cloudumgebungen bis hin zu Skale-to-Zero, also der Abschaltung von Anwendungsteilen. Bei einer On-Premise-Lösung mit Servern oder virtuellen Maschinen muss man dagegen für die erwartete Maximallast skalieren, und brachliegende Hardware-Ressourcen bleiben die meiste Zeit des Jahres ungenutzt – die Auslastungseffizienz ist entsprechend niedriger.
Software nachhaltig zu entwickeln ist kein Selbstzweck. Die EU strebt mit dem EU-Klimaschutzpaket „Fit for 55“ an, die EU-Emissionen bis 2030 um 55% zu senken 4). Die Ziele der Bundesregierung sehen bis 2030 sogar eine Reduktion um 65% vor 5). Können wir das auch gemeinsam für die Entwicklung und den Betrieb unserer Software schaffen? Wir glauben: Ja! Das bedeutet aber ein Umdenken aller Stakeholder, damit nachhaltige Softwareentwicklung und nachhaltiger Betrieb zu grundlegenden Anforderungen werden. Damit können wir gemeinsam mit und für unsere Kunden die Umwelt entlasten, die Vorgaben für kommenden Gesetze einhalten und Energie- oder Cloudrechnungen reduzieren.
Nachhaltigkeit ist als wichtiges Thema in der Gesellschaft und Politik angekommen. Die Entwicklung nachhaltiger Software wird allerdings noch viel zu wenig thematisiert, obwohl Software einen wesentlichen Einfluss auf die genutzten Hardware-Ressourcen hat.
Neben vielen anderen Bestrebungen in der msg beschäftigen wir uns im Center of Competence für Architektur im Geschäftsbereich des Public Sectors6) mit Green Coding und damit mit der Frage, wie die Entwicklung und der Betrieb von Software in Zukunft möglichst nachhaltig gestaltet werden können. Damit wollen wir unseren Beitrag leisten und unsere Kundinnen und Kunden nachhaltig in die Zukunft begleiten.
Quellen
1) https://www.bundestag.de/resource/blob/863850/423c11968fcb5c9995e9ef9090edf9e6/WD-8-070-21-pdf-data.pdf [Sachstand - Energieverbrauch von Rechenzentren, abgerufen am 31.3.2023]
2) https://de.statista.com/statistik/daten/studie/256942/umfrage/bruttostromverbrauch-in-deutschland/ [Bruttostromverbrauch in Deutschland in den Jahren 1990 bis 2022, abgerufen am 31.3.2023]
3) https://de.statista.com/infografik/27846/stromverbrauch-von-deutschen-rechenzentren-und-kleineren-it-installationen-pro-jahr/ [Server sind Stromverbraucher Nummer eins in der IT, abgerufen am 31.3.2023]
4) https://www.consilium.europa.eu/de/policies/green-deal/fit-for-55-the-eu-plan-for-a-green-transition/ [„Fit für 55“, abgerufen am 31.3.2023]
5) https://www.gesetze-im-internet.de/ksg/KSG.pdf [„Klimaschutzgesetzt, Abschnitt 2 §3“, abgerufen am 8.5.2023]
6) https://www.msg.group/public-sector [msg Public Sector, abgerufen am 20.4.2023]