Should the energy crisis affect the developer agenda?
Now is the time for a sustainable approach to computing and energy-efficient design of software systems
Everyone is talking about gas prices increasing, inflation, and the global effects of the current energy crisis. As we are living in a complex world, it’s natural to be concerned about the potential long-term effects that such a crisis could entail. The recent jump in energy prices and consequent inflation has put power consumption even further in the spotlight. For most businesses it is valuable to reduce energy costs in all circumstances. Together with an increased awareness of the environmental impact caused by power production, improving the energy efficiency of IT systems at any scale is becoming more and more significant.
As an example, one way to become more aware of your laptop power consumption might be to run
powerstat, an Ubuntu package that measures the power consumption of a computer that has a battery power source. It made me realize I was running an application on docker containers I wasn’t currently testing! True, it was only a few Watts, but if you multiply that by all the people keeping open apps they’re not actually using…
Green IT and Cloud Sustainability
From large-scale data centers to handheld systems, the drive for environmentally sustainable IT is not new. It is known in the industry as Green Computing or Sustainable IT, and is gaining renewed interest. In the past decade, cloud computing has been one of the major innovations in corporate IT, and is considered an effective approach to lower energy use and carbon emissions. On the one hand, it seems intuitive that optimizing resource utilization by matching server capacity with actual demand or serving multiple organizations on a shared infrastructure, are beneficial for reducing energy use and emissions. Data centers are better positioned to leverage improvements in hardware electronic components for reducing power consumption because of their scale. On the other hand, with the ever increasing number of digital products (platforms, mobile applications) and connected users, ecological concerns usually have a lower priority as opposed to increase capacity and economic gain in large-scale tech organizations. One could of course trust data centers to do their best in reducing power consumption using hardware-based approaches, though when it comes to software-based approaches we all get a share of the responsibility.
The environmental impact of IT is not only limited to power consumption. According to Berkhout and Hertin¹ there are higher-order effects, categorized into three main impacts: first-, second-, and third-order effects. First-order effects are the direct environmental effects that result from the production and use of IT, such as power consumption and hardware production. Second-order effects are indirect results of IT usage, for example rebound effects resulting from improvements in the efficiency of resource use. Third-order effects are long term indirect effects that result from using IT, like changes in life style promoting a higher resource consumption. In the near future, the production, usage, and disposal of digital products might be assessed evaluating these higher-order effects, in addition to direct environmental impact, resulting finally in “Green and Sustainable Software”.
An innovative approach in cloud computing has been developed by Leafcloud, a new Amsterdam-based cloud provider. The idea is to use the energy to power the servers twice. Rethinking the typical data center architecture, server nodes are installed at locations such as apartment buildings, hotels, nursing homes, swimming pools, and other structures that use hot water year-round. The heat produced by the servers will then be redirected into the water heating system, replacing heating from other sources. At the same time, there will be no need for building new structures for hosting the servers. A revolution in cloud sustainability?
Towards Green and Sustainable Software: the GREENSOFT Model
In the cloud-computing era, developers and architects have gradually become less sensitive to the hardware and networking layers, and progressively focused only on the software side of things. As a matter of fact, this is one of the major benefits for small- and medium-size organizations, and one of the main advantages when advocating the adoption of fully-managed and/or serverless solutions. Distributed software systems living in the cloud require a large network bandwidth and are complex by construction: many different components interacting with each other as well as subsequent resources over the Internet. The complexity is even greater considering that, for example, event-source and monitoring/alerting aspects of such systems are usually arranged by the cloud providers.
“we must think in terms of systems of elements in mutual interaction²”
Generally, there is a certain degree of built-in unawareness about the cloud-provider side system components, both in terms of actual implementation of the underlying services and in terms of environmental impact. Software-based approaches for reducing power consumption exploit runtimes’ features to leverage already existing mechanisms integrated into modern hardware. However, if one wants to reduce the power consumption, it is of course necessary to measure it first. At the hardware level, this is possible by making use of external or internal meters. For runtime power estimates, power-consumption models are needed as measuring the power is not always directly possible, especially for individual applications³. Monitoring the applications power usage might be a first step in making developers more aware of the environmental impact of their work. For example Microsoft’s Emissions Impact Dashboard makes it possible to estimate the carbon emissions of your cloud infrastructure. A practical attempt to estimate the carbon footprint of a cloud platform can be found here.
“the most strategic aspect of energy efficient computing will be the evolution of application software to facilitate system-wide energy efficiency⁴”
A reference model for Green and Sustainable Software has been proposed by Naumann et al., and presented as GREENSOFT Model⁶. The main goal is to build a conceptual framework to support sustainable creation, maintenance and usage of software.
It consists of four pillars:
- Life Cycle of Software Products: it provides stakeholders with a tool for assessing the impacts on sustainable development of software products (see next Figure).
- Sustainability Criteria and Metrics: for evaluating a software product’s sustainability.
- Procedure Models: for enhancing software development processes (e.g. by including sustainability reviews and retrospectives).
- Recommendations and Tools: for supporting stakeholders in applying sustainable techniques when developing, administrating or using software products.
The above model, might provide a way for developers and architects to enhance the current processes and methodologies by including sustainability assessments in the roadmap:
- Are all dependencies, in the form of external libraries or hardware requirements, really essential?
- Are there alternative microservice design patterns that lower the level of complexity?
- Is there an actual and justifiable need to scale up?
- When starting a new project from scratch, can a more energy-efficient programming language be chosen?⁷
The aim of this blog post is to encourage software developers and cloud architects, to understand whether considering energy efficiency in their daily tasks makes any sense at all, and/or whether in their daily practice there is any room for Eco-concerns. Additionally, I hope it serves the purpose of amplifying awareness of what is currently going on in your environment, how things work under the hood, and how much impact they have in their context.
 F. Berkhout, J. Hertin, Impacts of Information and Communication Technologies on Environmental Sustainability: Speculations and Evidence, Report to the OECD, 2001,
 Bertalanffy, Ludwig von, 1901-1972. General System Theory; Foundations, Development, Applications. New York :G. Braziller, 1969.
 Pierson, Jean-Marc. Large-Scale Distributed Systems and Energy Efficiency - Large-scale distributed systems and energy efficiency a holistic view. John Wiley & Sons, Inc. 2015.
 Brown David and Reams Charles, “Toward Energy- Efficient Computing: What will it take to make server-side computing more energy efficient?” Communications of the ACM, vol. 53, no. 3, pp. 50–59, 2010.
 Johann, Timo & Dick, Markus & Naumann, Stefan & Kern, Eva. (2012).
How to measure energy-efficiency of software: Metrics and measurement results
. 2012 1st International Workshop on Green and Sustainable Software, GREENS 2012 - Proceedings. 10.1109/GREENS.2012.6224256.
 S. Naumann, M. Dick, E. Kern, and T. Johann,
GREENSOFT Model: A Reference Model for Green and
Sustainable Software and its Engineering”
Sustainable Computing: Informatics and Systems, vol. 1, no. 4, pp. 294–304, 2011. [Online]. Available: doi:10.1016/j.suscom.2011.06.004
 Pereira, Rui & Couto, Marco & Ribeiro, Francisco & Rua, Rui & Cunha, Jácome & Fernandes, João & Saraiva, João. (2021). Ranking programming languages by energy efficiency. Science of Computer Programming. 205. 102609. 10.1016/j.scico.2021.102609.