Good software is green
How environmentally conscious development leads to better software
by Yvonne Marneth, BSc
Sustainability is a value that is becoming increasingly important in all areas of life, including in the world of software development. “Green” software development shows us strategies and ways of thinking to make our applications not only more environmentally friendly, but also cheaper and more robust.
Contents
- The desire for environmentally friendly software
- The 8 principles of “green coding”
- The cost of green software
- Author

The desire for environmentally friendly software
Although energy consumption in the digital sector is mainly caused by the use of hardware, it is largely triggered by software. Software therefore has a decisive influence on energy efficiency. An environmentally conscious approach to the development of an application makes a significant contribution to protecting our environment. Green software development aims to minimize the environmental impact of our software products in terms of energy consumption, greenhouse gas emissions and carbon footprint by incorporating sustainable software development practices, architecture and hardware into the development process.
The willingness to make our work greener is often there, but what concrete steps can developers take to consciously make their applications more sustainable? What criteria make software environmentally friendly? And are these even measurable?

The 8 principles of “green coding”
Sustainability in software development is not actually a new idea. However, the focus has now also expanded from the areas of economic efficiency and ease of change to the area of environmental protection. When people think of “green software”, they often first think of software whose primary task is to improve processes in terms of environmental protection. The fact that the architecture and development process of any software can also be sustainable is a rather new idea.
Since 2021, the Green Software Foundation, a non-profit organization, has been working on developing networks, guides, design patterns and tools to make sustainable software development accessible to developers. One result of these efforts are eight fundamental principles for green software development:

1) Carbon: Build applications that are carbon efficient
Treibhausgase tragen dazu bei, die Temperatur auf der Erde kontinuierlich zu erhöhen. Die Reduktion von Treibhausgasen ist also notwendig, auch wenn diese durch die Entwicklung und den Betrieb von Software verursacht werden. Software an sich bewirkt nur indirekt die Freisetzung von Treibhausgasen. Sie kann aber auch dazu verwendet werden, die Produktion von Treibhausgase in anderen Bereichen zu minimieren, zum Beispiel durch den Einsatz von Software zum Monitoring und Verbesserung von anderen Prozessen.
2) Electricity: Build applications that are energy efficient
Es gibt bereits vielversprechende mathematische Modelle, welche die Energieeffizienz verschiedener Funktionen in einer Applikation rechnerisch annähern und bereits recht gute Kennzahlen liefern. Auch der Einsatz von KI-basierten Systemen haben bereits gute Ergebnisse geliefert, um die Energieeffizienz von Software zu bewerten – wobei hier allerdings auch bemerkt werden muss, dass neuronale Netze selbst meist einen höheren Stromverbrauch verursachen als klassische Rechenmodelle. Es gibt bereits verschiedene Werkzeuge für Entwickler*innen, um die Energieeffizienz ihres Codes zu messen. Die Ergebnisse vieler Verfahren variieren jedoch stark, basierend darauf, wie, in welchen Zeiträumen und in welchem Kontext der Energieverbrauch betrachtet wird. Das macht es schwer, digitale Produkte untereinander zu vergleichen, sie können aber trotzdem gute Anhaltspunkte liefern, an welchen Stellen eine Applikation Verbesserungspotenziale hat.
3) Carbon Intensity: Consume electricity with the lowest carbon intensity
Strom in einem lokalen Netz setzt sich aus verschiedenen Quellen zusammen. Große Teile werden noch immer aus fossilen Brennstoffen gewonnen. Der Anteil, der durch erneuerbare Energiequellen erzeugt wird, hängt stark von der geographischen Lage und der dort vorherrschenden energiepolitischen Einstellung ab. Selten haben Einrichtungen großen Einfluss darauf, wie der Strom, den sie verbrauchen, erzeugt wird. Meist es nicht einmal klar nachvollziehbar. Diesem Problem kann man allerdings bereits gegensteuern, indem beim Betrieb einer Applikation Serverstandorte vermieden werden, bei denen bereits bekannt ist, dass große Teile des lokalen Netzes durch nicht-umweltfreundliche Quellen gespeist werden.
4) Embodied Carbon: Build applications that are hardware efficient
Ein ständiger Konflikt der Software-Entwicklung besteht in dem Drang, auf dem neuesten Stand der Technik zu bleiben. Die Umweltbelastung, die durch einen physischen Server entsteht, beschränkt sich jedoch nicht nur auf den Stromverbrauch während der Laufzeit, sondern kommt bereits bei der Herstellung eines Rechners, sowie später bei seiner Entsorgung zu tragen. Die Umweltbelastung durch seine Herstellung und Entsorgung kann dabei sogar höher ausfallen als durch die Energie, die während des Betriebs benötigt wird. Sinnvoll wäre es also, Server so lange wie möglich in Betrieb zu halten. Grundsätzlich nutzen sich Computer nicht ab, da sie keine beweglichen Teile haben. Trotzdem gibt es ein Verfallsdatum: Zum Beispiel, wenn sie modernen Workloads nicht mehr gewachsen sind, müssen sie ersetzt werden. Software, die mit älteren Geräten kompatibel ist, hilft dabei, das Leben von Hardware zu verlängern und dadurch ihre Umweltbelastung zu verringern.
5) Energy Proportionality: Maximise the energy efficiency of hardware
Gleichzeitig ist das Verhältnis zwischen der Auslastung und dem Energieverbrauch nicht proportional, auch weil ein laufender Computer immer einen bestimmten Grundverbrauch hat. Je besser ein Computer ausgelastet ist, desto energieeffizienter funktioniert das Gerät. Server können ihren Energieverbrauch bei geringer Last nur bedingt reduzieren, sodass sie sofort auf Anfragen reagieren können, wenn diese gemacht werden. Durch laufende Server-Skalierung kann in Zeiten niedriger Auslastung Energie gespart werden, indem die Software auf weniger physischen Maschinen betrieben wird. Auch die “Serverless”-Architektur hilft dabei, den Stromverbrauch in Ruhezeiten minimal zu halten.
6) Networking: Reduce the amount of data and distance it must travel across the network
Eine eher unsichtbare Umweltbelastung besteht im Internet selbst. Das Internet besteht aus einem weltweiten Netzwerk von Geräten, welche zusätzliche Energie verbrauchen. Jede Anfrage über das Internet verursacht Energieverbrauch. Wie groß dieser ist, hängt vor allem von der Distanz zwischen Client und Server ab, wie viele Netzwerkgeräte die Anfrage weiterleiten müssen, wie diese betrieben werden etc. – aber auch von dem verwendeten Protokoll.
Eine ressourceneffiziente Software sollte also unnötigen Datentransfer vermeiden, sowie die passenden Protokolle wählen, um Daten möglichst effizient zu übertragen.
7) Demand Shaping: Build carbon-aware applications
Demand Shaping beschäftigt sich mit der Praxis den Service, bzw. die Qualität des Service umgekehrt an die Nachfrage anzupassen. Video Conferencing Software beispielsweise reduziert die Videoqualität und priorisiert Audioübertragung zu Zeiten hoher Auslastung. Diese Methodik kann verwendet werden, um Applikationen umweltfreundlicher zu gestalten.
So kann die User-Experience angepasst werden, wenn die Kosten des Betriebs zu hoch werden. Da es hier bisweilen zu Kosten in der Verwendbarkeit kommt, kann ein „Eco-Mode“ auch als bewusste Entscheidung während der Verwendung angeboten werden.
8) Measurement & Optimisation: Focus on step-by-step optimisations that increase the overall carbon efficiency
Es ist nicht notwendig, alle Eventualitäten aus dem Vorhinein abzuwägen. Einzelne bewusste Entscheidungen können bereits einen großen Unterschied machen. Wichtig ist es vor allem, Entwicklungen zu beobachten und kontinuierlich Schritt für Schritt Verbesserungen einzubringen. Diese Vorgehensweise ist nicht nur im Sinne der Nachhaltigkeit, sondern sorgt gleichzeitig auch für eine anpassungsfähige Software mit einer proaktiven Wartung.
The cost of greener software
If you want environmentally friendly software, you have to keep many parameters in mind when developing it and think about the possibilities and trade-offs. The question of the costs of these changes also plays a major role in these decisions. However, many of the features of environmentally friendly software are actually the same as those of high-quality software that is very inexpensive to operate.
By consciously saving resources and using them carefully, operating costs can be reduced. As potentially fewer physical servers, memory and computing power are required. The user experience does not usually have to suffer as a result of such savings – on the contrary. Efficient software is usually faster, more reliable and puts less strain on users’ devices. Prioritizing resource efficiency puts the focus back on the core functionality of a product and thus leads to improvements in UX design by identifying and eliminating superfluous elements.
The conscious use of resources and their monitoring leads to reliable, secure, durable and adaptable software. The slightly higher costs that may be incurred during the initial development of the application can therefore be seen as an investment in future-proof software.
RISC Software GmbH is happy to support you in the development of environmentally friendly software and contribute its expertise.

Contact us
Author
Yvonne Marneth, BSc
Software Developer

