Energieeffiziente Software ist der Teil zum Thema Nachhaltigkeit den Software Engineers und Softwarearchitekten am meisten beeinflussen können. Im Bereich der Softwarearchitektur sind wir es gewohnt mit Qualitätszielen oder -attributen zu arbeiten. Der vielleicht wichtigste einzelne Hebel der uns auf dieser Ebene zur Verfügung steht ist Ressourcen- und Energieeffizienz als Qualitätsziel in den Entwicklungsprozess einzubringen und zu priorisieren. Wie im Umgang mit Qualitätszielen üblich kommt es zu Wechselwirkungen mit anderen Qualitätszielen, z.B. ist vorstellbar dass eine Verbesserung der Effizienz mit einer Verschlechterung der Wartbarkeit einhergeht. Es gibt allerdings auch positive Wechselwirkungen.
Kein Entwickler wartet gerne auf Feedback. Und CI-Server sind in einigen Projekten signifikante Energieverbraucher, vor allem wenn viele komplexe Tests eingesetzt werden. Nach unserer Erfahrung sind diese Test-Setups selten notwendig und mit einer anderen Teststrategie (Fokus auf schnell-laufende Unit-Tests) wird gleichzeitig die Produktivität gesteigert, die Zufriedenheit der Entwickler gesteigert sowie Ressourcen gespart.
Neben diesem konkreten Beispiel kann man festhalten dass die Reduktion von Serverressourcen Kosteneinsparungen bewirkt und dadurch zusätzliche Rechtfertigung erhält - auch wenn in den Green Principles steht dass "Nachhaltigkeit alleine" ausreicht um alle Bemühungen zu rechtfertigen.
Weitere Rezepte um Energieeffizienz zu erhöhen
- Datentransfer reduzieren
- spezifischere Datenstrukturen verwenden (z.B. nur notwendige Informationen senden, Daten nur einmalig aufbereiten)
- Datenbank-Funktionalität nutzen (sortieren, filtern, Spalten auswählen)
- sehr kleinteilige Architekturen / viele Microservices vermeiden
- Overhead durch Komponentenverteilung, Clustermanager, Logging und andere Infrastrukturelemente muss im Verhältnis zur Funktionalität stehen
- gesamten Lebenszyklus der Software betrachten, abwärtskompatibel bleiben, Progressive Enhancement
- und falls man nicht mehr reduzieren kann, ist Demand Shifting eine Option wo Green IT und Green Software sich ergänzen können um Karbon-effizientere Lösungen zu finden (auch wenn diese ggf. nicht energie-effizienter sind).
In Kürze erfahren Sie hier mehr zum Thema!