Table of Contents
The Agile Testing Days invited me to showcase my work at the SDIA using test systems to measure environmental impact. You can find the presentation and transcript below.
Creating transparency on the impact of digitalization and starting the journey toward a sustainable digital economy.
How do we measure the energy & resource consumed by software? Why does it matter? What's the role of software in the global climate crisis?
Digitalization and digital transformation are redefining industries and have become a key tool for addressing climate chat. But that is the footprint of software applications, especially running in Cloud environments and on remote data centers? When using mobile and web applications today, there is often a vast infrastructure behind it that we can not see or touch, nor have visibility into its environmental footprint. At the SDIA, a nonprofit, together with our members and the support of the German environmental protection agency, we are finally solving this problem by creating the tools that software developers need to display the environmental footprint of their applications to the end-users while enabling them to take action and reduce the footprint.
When we started SDIA 3 years ago, the word 'sustainability' was not in vogue and I had to start every presentation with a definition. And today? Again, I'll start this presentation with a definition because it's used so often that it has lost clarity and meaning.
It's actually not just about sustainability itself, but about the sustainable development of our society and economy - so a development that balances the needs of the environment, society, the economy and leaves the world for the next generation as we found it .
The English original "Sustainable Development" was defined in 1987 by the Brundlandt Commission.
This also includes the Sustainable Development Goals, which I am sure you’ve spotted already.
What does this mean for the SDIA Community and the larger IT community?
It means that we also have to deal with how we can develop our sector sustainably and chart a path which enables us to "digitalize more" without negative environmental and social effects.
it’s difficult to really get a feel for the size of today’s negative impact from IT, so what do we do?
First measure. But how do you measure the environmental impact of software applications, of a shared service? Of a website? Of a google search?
It is possible. And to explain how, you need to follow me on a bit of journey.
When I started software development 15 years ago, the IT world looked like this:
An application sitting on a server which is used by someone
The server is in a data center which I know
and the network is connecting the user/application and the data center
Then every 2-3 years a new abstraction layer was introduced
And the application is moving further and further away from the actual infrastructure
and current hot shit: serverless
Ironic that serverless but still runs on a server
And then came the complete abstraction of IT infrastructure: cloud infrastructure
Now I don't even know which data center I'm actually in. And the illusion is complete: I can use infinite resources for my software.
And now we're trying to measure the the environmental impact of the physical infrastructure of the application?
That’s very complex - it’s much more feasible if we simplify our model, our approach.
So what does a simplified model look like?
I know that every IT person is about to throw a beer bottle at me, but come with me for a moment.
Digital infrastructure produces resources.
The next layer knows or makes these resources available to one or more applications.
The application consumes these resources to provide a product or service to users.
The model can be applied to almost anything - digital infrastructure can be a smartphone or laptop, the resource allocation then makes the operating system for the application(s) currently running in parallel. But it can also be a data center with 10 servers that are virtualized.
The key in this model is the idea of the digital resource
Because software does not exist in physical space, it cannot have any environmental impact. However, the creation of the resources that the software consumes may very well have an environmental impact.
In the end, a computer does nothing other than convert raw materials and electricity into computing power, into digital resources. So whatever materials and electricity are being used, that’s where the environmental impact stems from.
So if I can assign an environmental impact to each resource and know how many resources an application consumes
Then it suddenly becomes much easier to measure and determine how much environmental impact is hidden in a software application.
And with the idea of digital resources, transparency can be created across the entire value chain: how well the produced resources are utilized, amount of waste, and the environmental impact of each resource
OK, we can measure it, but what does the path to sustainable development of the digital sector look like now?
Let's clarify the responsibilities first. Who is actually responsible for the environmental impact?
The user is responsible for sensible use. You shouldn't drive your car in circles, even if it's running on green electricity.
The manufacturers of software and digital products are responsible for making the consumption of resources and the associated environmental impact transparent to the user and minimizing them. Digital resources should also be procured from sources with minimal or no environmental impact.
When allocating resources, waste of resources should be avoided or idle time reduced.
And digital infrastructure must generate sustainable resources and make the environmental impact of each resource transparent.
If the responsibilities are clear, we can create the tools and the transparency that enable the sustainable development of digital economy and digitization
and that's what we're working on with our SDIA community.
let’s translate this to what this means for testing. That’s tests lead to an improvement in maintainability and quality of software is nothing new for you.
But we asked: can we use integration test to measure the environmental impact of software are doing the development process?
and thanks for the German environmental agency. We got some funding to explore this question.
But we need to narrow the scope so we asked again what’s the most systemic component of software, the very high test coverage? And it won’t surprise you that we ended up with open source, software, libraries and components which are the key ingredients for most modern software and digital products.
so we build a test laboratory based on GitLab to measure the energy use and environmental impact of integration and unit tests
And before you ask, no, this does not allow for the comparison, but it gives developers very clear feedback on the additional environmental cost of edit functionality, or in the other direction, the savings from removing functionality, or refactoring a piece of software.
To do this we pioneered a new non-root-based methodology using mathematics as well as full support for IPMI/RAPL
our tooling can be used in any test execution pipeline
The community is slowly bringing it to more test environments such as get up. If you want to help or play with it yourself hit me up afterward or join our community - it’s free
Max Schulze Newsletter
Join the newsletter to receive the latest updates in your inbox.