Wenn wir heute über nachhaltige IT sprechen, liegt unser Fokus oft auf der IT-Infrastruktur aus Servern, Netzwerk und Endgeräten. Welchen Einfluss die Software, für deren Nutzung diese IT-Infrastruktur aufgebaut wurde, auf den Energiebedarf hat, spielt oft nur eine untergeordnete Rolle. Dabei ist der Energiebedarf einer Software ein wesentlicher Aspekt von Nachhaltigkeit.

In diesem Post fokussiere ich mich auf energetische Nachhaltigkeit. Teilweise gehe ich auf die Nachhaltigkeit weiterer Ressourcenarten wie Entwicklungskapazität ein.

Der Strombedarf in der IT steigt weiter

Nach einer Schätzung des BITKOM wird der Strombedarf allein in deutschen Rechenzentren von 18 TWh im Jahr 2023 bis zum Jahr 2030 auf 27 TWh bis 34 TWh steigen. Das wäre eine Steigerung um 50 bis 90 Prozent bis 2030. Dieser Bedarf kann nur durch eine Erhöhung der lieferbaren Energiemenge gedeckt werden.

Dabei spielt der Ressourcenhunger von IT-Anwendungen und -Services eine entscheidende Rolle. Je stärker eine Software nach nachhaltigen Gesichtspunkten entworfen und entwickelt wird, desto weniger Energie wird am Ende benötigt.

Digitalisierung als Treiber für Energiebedarf

Das Voranschreiten der Digitalisierung in Deutschland kann grundsätzlich einen positiven Einfluss auf den Ressourcenbedarf der betroffenen Organisationen und Individuen haben, indem beispielsweise Papier, Zeit und Wege eingespart werden.

Nachteil ist, dass die Digitalisierung den Energiebedarf weiter steigen lässt. Und auch hier spielt die verwendete Software und deren Nachhaltigkeit eine wesentliche Rolle.

Architektur beeinflusst Nachhaltigkeit

Schon während des Designs und der Entwicklung eines Software-Systems können die Weichen für die Nachhaltigkeit dieses Systems gestellt werden. Die Architektur eines Software-Systems hat dabei einen starken Einfluss.

Leider ist die Nachhaltigkeit einer Software-Architektur nicht direkt messbar. Wir können allerdings typische Qualitätskriterien von Software-Systemen als Vehikel verwenden, um ihre Wirkung auf die Architektur und damit auf die Nachhaltigkeit der Architektur selbst abschätzen zu können.

Eine hohe Skalierbarkeit eines IT-Systems ermöglicht es, die Ressourcennutzung an aktuelle Anforderungen anzupassen. Durch eine automatische Anpassung der verfügbaren Systemleistung an den tatsächlichen Bedarf kann also ein übermäßiger Energieverbrauch vermieden werden.

Qualitätskriterien als Messgröße für Nachhaltigkeit

Die ISO 25010 beschreibt typische Qualitätskriterien von Software-Systemen. Zu diesen Kriterien gehören beispielsweise Verfügbarkeit, Performance, Wartbarkeit, funktionale Vollständigkeit, Benutzbarkeit und Sicherheit.

Solche Qualitätskriterien beeinflussen die Nachhaltigkeit einer Software-Architektur entweder positiv oder negativ, sofern sie für ein Software-System Geltung haben. In diesem Post können wir uns mit diesem Zusammenhang zwischen Qualitätskriterien und Nachhaltigkeit nicht allumfänglich widmen, da es einfach sehr viele Qualitätskriterien gibt. Zur Veranschaulichung des Zusammenhangs sollen deshalb sechs Beispiele dienen.

1. Funktionale Vollständigkeit

Software-Systeme verfügen über Funktionalitäten, die mit besten Absichten für eine spätere Nutzung eingebaut wurden … sowohl in funktionaler als auch in technischer Hinsicht. Spätestens seit das Mantra YAGNI – You ain’t gonna need it – in der Software-Entwicklung zum geflügelten Wort wurde, wissen wir, dass das der investierte Aufwand schlicht verschwendet ist.

Das Problem dabei: Jede Funktionalität innerhalb einer laufenden Software benötigt Speicher, CPU und im Fall einer Cloud-Lösung auch Netzwerkbandbreite für die Kommunikation. Handelt es sich also um Funktionen, die nicht oder nur selten verwendet werden, spricht das eher nicht für eine nachhaltige Ressourcen-Nutzung – sowohl im laufenden System als auch bei der Software-Entwicklung.

In den John Lewis Engineering Principles finden wir mit Design for Emergent Reuse ein Architektur-Prinzip, dass davon abrät, von vorn herein Wiederverwendbarkeit als Design-Ziel zu verwenden. Die Empfehlung lautet, Design auf reale Anwendungsfälle auszurichten und das Design erst im konkreten Fall hin zu Wiederverwendung weiterzuentwickeln.

2. Sicherheit

Maßnahmen zum Schutz von IT-Systemen, Daten oder der Privatsphäre kosten immense Ressourcen. Allerdings wird heute kaum jemand die Notwendigkeit derartiger Schutzmaßnahmen in Frage stellen.

In der Software-Entwicklung spielen Schutzmaßnahmen wie Schwachstellenanalyse oder Injection Prevention eine große Rolle. Eine gute Quelle für Sicherheitsmaßnahmen auf Architektur-Ebene ist und bleibt OWASP mit seinen Secure Design Principles und der Security Architecture.

Alle diese Sicherheitsmaßnahmen verursachen einen hohen Energiebedarf, sind aber essenziell und notwendig. Sicherheit muss also gegenüber Nachhaltigkeit immer priorisiert behandelt werden.

3. Performance

Die hohe Performance eines Service im Sinne von schneller Antwortzeit bei Nutzeranfragen spricht auf den ersten Blick für eine nachhaltige Lösung. Andernfalls dürfte kaum eine schnelle Antwort möglich sein, oder?

Abfragen in einer Datenquelle mit Milliarden Einträgen, die Übertragung von Millionen von Datensätzen aus dieser Quelle an einen Servicenutzer, der nur die ersten 10 dieser Datensätze verwendet sind in modernen Cloud-Umgebungen innerhalb wenigen Sekunden möglich. Die energetischen Kosten können immens sein.

Also beeinflusst hohe Performance als Qualitätskriterium die Nachhaltigkeit einer Lösung negativ?

Nein. Die Zahl der möglichen Design-Praktiken,  um derartige Herausforderungen ressourceneffizient zu lösen, ist gerade im Cloud-Umfeld groß. Ob sich ein Lösungsmuster aus Sicht der Software-Architektur eines Systems eignet und angemessen ist, ist daher stark kontextabhängig.

Und: Eine gute Performance wirkt sich positiv auf weitere Qualitätskriterien wie Verfügbarkeit und Benutzbarkeit aus.

4. Verfügbarkeit

Verfügbarkeit beschreibt den Grad, zu dem ein System, eine Anwendung, ein Service oder eine Komponente den Anwendenden zur Verfügung steht.

Verfügbarkeit lässt sich teilweise auf Hardware-Ebene unterstützen. Stark vereinfacht könnten wir sagen, mehr eingesetzte Hardware bringt eine höhere Verfügbarkeit. Mehr Hardware bedeutet aber auch einen höheren Energiebedarf zum Nachteil der Nachhaltigkeit.

Innerhalb der Software-Architektur eines Services wird die Verfügbarkeit z. B. durch den Einsatz von Resilience Patterns beeinflusst. Diese werden verwendet, um

  • zu verhindern, dass ein Service nicht mehr verfügbar ist (z. B. Rate Limiting)
  • Durchsatz, Latenz oder Zuverlässigkeit auf ein noch vertretbares Maß abzusenken, während der betroffene Service grundsätzlich verfügbar bleibt (Service Degradation bei Video-Qualität)
  • die schnellstmögliche Wiederverfügbarkeit eines Services nach einem Ausfall unterstützen (Failover)
  • Informationen über den Zustand eines Services sammeln und bereitstellen, um einen Ausfall zu verhindern oder ein System, dass diesen Service verwendet, zu informieren (Alerting/Alarming)

Beeinflusst die Verwendung von Resilience Patterns die Nachhaltigkeit eines Services positiv oder negativ?

Resilience Patterns in eine Architektur zu integrieren, kostet zusätzlichen Aufwand und Energie. Wenn sich die Verfügbarkeit eines Services mit Hilfe der verwendeten Architektur erhöhen lässt, ist dieser Weg gegenüber der Aufrechterhaltung der Verfügbarkeit durch zusätzliche Hardware zu Gunsten energetischer Nachhaltigkeit zu bevorzugen.

5. Wartbarkeit

Wartbarkeit beschreibt, wie effektiv und effizient ein System verändert werden kann, um es zu verbessern, um Fehler zu beseitigen oder um Funktionalität zu verändern.

Je leichter ein Service an sich ändernde Anforderungen anpassbar ist, desto besser werden nachhaltige Aspekte unterstützt. Das bedeutet aus Architektur-Sicht allerdings nicht, dass ein Service von vornherein auf alle Teilaspekte der Wartbarkeit laut ISO 25010 vorbereitet werden soll oder muss:

  • Modularität beschreibt u. a. die Fähigkeit Änderungen in einer Komponente ohne Änderungsbedarf in anderen Komponenten durchführen zu können. Der Bedarf gemeinsamer Änderungen ist schwer vorherzusehen und kann über die Zeit zu einem geänderten Schnitt von Modulen führen.
  • Wiederverwendbarkeit ist nicht für jede Komponente notwendig. Hier bitte anwendungsfallgetrieben vorgehen.
  • Analysierbarkeit: Eine Unterstützung von Analysierbarkeit ist grundsätzlich eine wünschenswerte Eigenschaft. Konkrete Bedarfe ergeben sich meist über die Zeit.
  • Modifizierbarkeit: Der Bedarf nach Modifizierbarkeit ergibt sich u. a. aus dem Änderungsbedarf. Komponenten, die sich nie oder selten ändern, müssen nicht zwangsläufig leicht modifizierbar sein.
  • Testbarkeit ist vor allem mit Blick auf Regression eine häufig wünschenswerte Eigenschaft, auch mit Blick auf Nachhaltigkeit.

Sofern eine hohe Wartbarkeit bedarfsgetrieben unterstützt wird, geht sie mit Nachhaltigkeit konform. Wenn ein Service nach zwei Jahren Lebenszeit komplett neu entwickelt werden muss, weil keine Wartbarkeit gegeben ist, ist dieser Service mit Blick auf Entwicklungsressourcen ebenso wenig nachhaltig wie aus energetischer Sicht. Die Ursachen hierfür können gern im Umfeld der Software-Architektur gesucht werden.

6. Hohe Benutzbarkeit, einfachere Lösung

Ein hoher Automatisierungsgrad, Medienbruchfreiheit, intuitive Bedienbarkeit und möglichst wenige Klicks durch beteiligte Benutzer sprechen für ein eher nachhaltiges Design. Solche Eigenschaften unterstützen potenziell ein einfaches Software-Design und können auf Qualitätskriterien wie Wartbarkeit und Sicherheit einzahlen.

Andererseits können schlechte Bedienbarkeit und viele manuelle Aktionen zu vielschichtigen Fehlern führen, die aufwändig im Service abgefangen und behandelt werden müssen.

Wenn eine hohe Benutzbarkeit mit aufwändigem grafischen Design einhergeht, kann die energetische Nachhaltigkeit also negativ beeinflusst werden. Gerade im Umfeld des nachhaltigen Webdesigns gibt es heute Erkenntnisse darüber, dass Einfachheit die Benutzbarkeit positiv beeinflussen kann.

Fazit

Die Nachhaltigkeit von Software-Architekturen ist offenbar ein relevanter Aspekt unserer IT. Bisher gibt es wenige Organisationen, die ihre Software unter dem Gesichtspunkt hoher Nachhaltigkeit entwickeln oder entwickeln lassen.

Und nun? Wie können wir es schaffen, mehr Nachhaltigkeit in unsere Software zu kriegen?

In Zeiten hoher Energiepreise ist Nachhaltigkeit im Kontext von Kosten gut greifbar. Oft gilt: niedrige Kosten, hohe Nachhaltigkeit. Da viele Organisationen unter Berücksichtigung von Kosten- und Wirtschaftlichkeitsaspekten agieren, ist eine Verbesserung der Nachhaltigkeit von Software-Systemen mit Blick auf Betriebs- und Wartungskosten unter Umständen einfacher voranzutreiben. Die Energiekrise könnte also indirekt Initiativen für mehr Nachhaltigkeit anschieben. Ebenso regulatorische Maßnahmen, die die Preise für Energie und weitere Ressourcen beeinflussen.

Alle Beiträge von Ramon Anger

Seit über 25 Jahren Software Architekt und Entwickler von ganzem Herzen.

Schreibe einen Kommentar