Code

Green Coding – immer mehr Nachhaltigkeit in der IT erforderlich

Der Klimawandel ist die zentrale Herausforderung des 21. Jahrhunderts. Unternehmen weltweit müssen ihren CO2-Fußabdruck drastisch reduzieren, wobei sie verstärkt auf die Digitalisierung setzen. Allerdings stößt die Technik dahinter immense Treibhausgase aus, die verringert werden müssen. Um die IT nachhaltiger zu gestalten, wird ein neuer Ansatz verfolgt – Green Coding.

Green Coding bezieht sich auf den Energieverbrauch einer Software und hier insbesondere auf die Bereiche Softwarearchitektur, die konkreten Softwarekomponenten sowie die Betriebsplattform. Im Rahmen der Softwarearchitektur ist Green Coding eine weitere nichtfunktionale Anforderung analog zu Security oder Performance. Sie zielt darauf ab, den Energieverbrauch einer Softwarekomponente möglichst gering zu halten.

In der Praxis deckt sich das sehr oft mit Performanceanforderungen. Das heißt, häufig ist der performanteste Code auch der, der am wenigsten Energie verbraucht. Bei der Realisierung der Softwarekomponenten muss die Anforderung des geringen Energieverbrauchs messbar formuliert und während und nach der Entwicklung überprüft werden. Die Programmierer können bei der Optimierung weitgehend auf bekannte Maßnahmen zur Performancesteigerung zurückgreifen. Das Motto lautet hier: „Jede Codezeile hat das Potenzial, den Energieverbrauch zu senken.“

Grüne Betriebsplattform

Die Betriebsplattform ist ein weiterer Bereich, in dem Green Coding eine große Rolle spielt. Der Betrieb in der Cloud ist in der Regel um ein Vielfaches energie- und damit CO2-effizienter als in firmeneigenen Rechenzentren, weil virtuelle Server oder Container nur zum Bedarfszeitpunkt gestartet werden. Wird ein eigener lokaler Server betrieben, so sollte sich die Leistung der Hardware am tatsächlichen Bedarf ausrichten, der Server also nicht überdimensioniert sein. Ist der Betrieb in der Cloud nicht möglich, dann sollte die Abwärme des Rechenzentrums in der kalten Jahreszeit bestenfalls auch als Heizquelle verwendet werden.

Laut wissenschaftlichem Dienst des Bundestages steigt der Energieverbrauch von Rechenzentren jährlich an. Der Anstieg sei dabei vor allem auf den steigenden Strombedarf der Server zurückzuführen. Obwohl der Anteil der Software im Gegensatz zum Beispiel zur Kühlung der Rechenzentren geringer ist, wird die Nachfrage nach energieeffizienter und ressourcenschonender Software in Zukunft steigen. Auch die Anwender der Software haben Einfluss darauf, wann bestimmte Berechnungen durchgeführt werden. So können zum Beispiel unkritische Batchläufe um die Mittagszeit ausgeführt werden, wenn eine Nutzung von Solarenergie möglich ist.

Das von msg entwickelte Tool jPowerMonitor überwacht innerhalb laufender Applikationen, welche Funktionen gerade aktiv sind und wie viel CPU-Zeit sie in Anspruch nehmen.

Mögliche Entwicklungen

In Zukunft wird es weitere Entwicklungen in Richtung Performanceverbesserung und damit auch in Richtung Nachhaltigkeit geben. Die Vergangenheit zeigt, dass wir immer schneller immer komplexere Systeme entwickeln können und die Programme oft sogar noch performanter und mit weniger Energieverbrauch laufen als früher. Beschäftigte in Fachabteilungen, IT-Architektur, Entwicklung und Betrieb können somit einen Beitrag zum Umweltschutz leisten. Welche konkreten Maßnahmen und Entwicklungsmuster für grünes Coding umgesetzt werden können, fasst die folgende Checkliste zusammen.

Checkliste – die wichtigsten Punkte für alle Stakeholder

  • Nicht funktionale Anforderungen zu Grüner IT und Green Coding sind definiert
  • IT-Architekten und Entwickler sind geschult
  • System skaliert dynamisch und fährt sich bei Leerlauf herunter
  • Dynamische Inhalte und Echtzeitverarbeitung werden möglichst vermieden
  • Komponenten mit dem höchsten Energieverbrauch sind identifiziert
  • Green Coding Prinzipien und Entwicklungsmuster in folgenden Punkten berücksichtigt:
    • Effizienter Code mit optimalen Algorithmen
    • Vermeidung unnötige Round-Trips
    • Caching
    • Optimiertes Datenvolumen
    • Komprimierte Netzwerkkommunikation
    • Datenbankindizes
    • Optimierte Ressourcennutzung durch optimierte Konfiguration
    • Zero Waste Code
    • Prinzip: „Jede Codezeile hat das Potenzial, den Energieverbrauch zu senken“
  • Performance Engineering: Es ist klar, was, wann und wie gemessen wird
    • Was: Gesamtsystem, Prozess, Komponente, Methode
    • Wann: Unittest, Integrationstest, Betrieb
    • Wie: Open Hardware Monitor oder Smart Plugs, Frameworks
  • Ressourcenverbrauch: Optimierung von CPU, RAM, Speicher, Netzwerk
  • DevOps und Betrieb
    • DevOps Pipeline ist hinsichtlich Energieverbrauch optimiert
    • Containerbasierte Plattform mit intelligenter, dyn. Skalierung wird genutzt

Green Coding – den Energieverbrauch von Software richtig messen

Um herauszufinden, an welchen Stellen im Sourcecode Energie eingespart werden kann, benötigt man Werkzeuge zum Messen des Energieverbrauchs. Tools, die auf Prozessebene den Energieverbrauch von Software messen, sind bereits zum Beispiel in Windows integriert. In einen Prozess „hineinsehen“ kann man mit diesen Tools nicht. Das bedeutet, dass keinerlei Aussage darüber getroffen werden kann, welche Komponente oder Funktion innerhalb des Prozesses am meisten Energie verbraucht. Exakt diese Information ist für Entwickler jedoch essenziell.

Autoren

  • Hans-Peter Keilhofer

    Hans-Peter Keilhofer ist Dipl. Informatiker mit langjähriger Berufserfahrung und unterstützt als Executive IT Consultant bei der msg Group Kunden in der Planung und Umsetzung von IT-Architekturen. Darüber hinaus hält er als Dozent an der Universität Passau regelmäßig die Vorlesung „Softwareentwicklung für Fortgeschrittene“ am Lehrstuhl für Wirtschaftsinformatik mit Schwerpunkt Internet- und Telekommunikationswirtschaft.

  • Jakob Deiner

    Jakob Deiner ist M. Sc. Informatik und verfügt über mehr als zehn Jahre Berufserfahrung. Als Lead IT Consultant bei msg GillardonBSM berät er Kunden in seinen Schwerpunktthemen IT Architektur, objektorientiertes Design und containerbasierte Betriebsplattformen. Er ist außerdem Certified Professional for Software Architecture (iSAQB) - Foundation Level (CPSA-F) und Certified Scrum Master (CSM), Scrum Alliance.