Aman Dhamija is a software engineer at Goldman Sachs and a member of the Green Software Foundation. In this article, Aman discusses the changing the culture of building software.
Green Software Foundation
It is a nonprofit under the Linux Foundation that aims to build a trusted ecosystem of people, tooling, and best practices for green software. The foundation’s vision is to change how you know the culture of how we build software within the global industry. We want to do it so that sustainability becomes a core priority and is just as important as cost, performance, accessibility, etc.
With net emissions increasing in the IT industry each year, it’s very important to focus on reducing carbon emissions, and we can only do that if we place software at the center of our sustainability discussion.
What is green software?
There are two ways of looking at software; software as part of the climate solution and software as part of the climate problem. We want to see software as part of the climate solution, and thereby, we want to focus on reducing the carbon emissions from the software itself. There are only three ways of doing this right now; using lesser physical resources, using less energy, and using energy more efficiently. Green software is carbon-efficient, meaning it uses the least amount of carbon possible. The three principles of green software are energy efficiency, hardware efficiency, and carbon awareness.
- Energy Efficiency – Consume the least amount of energy possible
- Hardware Efficiency – Use the least amount of embedded carbon possible
- Carbon Awareness – Do more when the electricity is clean and less when it’s dirty
Carbon Efficiency
One hour of dreaming produces the same carbon emissions as charging seven smartphones. We want to extract the maximum value for every gram of carbon we emit into the atmosphere. Therefore, carbon-efficient applications emit the least amount of carbon possible. So, our goal should always be to build carbon-efficient applications.
Energy Efficiency
Energy is the ability to do work, and it exists in many forms and can be converted from one form to the other. We can consider energy to be a measure of electricity. Most electricity is produced by burning fossil fuel; hence, energy supply is one of the single biggest emitters of carbon. If our goal is to be carbon efficient, then we must be energy efficient.
Carbon Awareness
In this, we focus on using electricity more when it’s clean. Not all electricity is produced in the same way. Depending on your region or location, electricity is produced from a mixture of various sources, and all sources have varying carbon emissions. For example, wind or solar sources have fewer carbon emissions than fossil fuels. Carbon intensity measures the amount of carbon emitted in grams per kilowatt-hour of electricity consumption. If our goal is to build carbon-efficient software, then we must use electricity when the carbon intensity is low. This is called carbon-aware computing. This can be achieved by demand-shifting. There are two ways of achieving demand shifting. The first one is spatial shifting, which means moving your application to a different region with less carbon intensity. Secondly, we have temporal shifting, which means shifting your application to a different time during the day when the carbon intensity is less. Doing this reduces carbon emissions and helps accelerate the transition to lower carbon energy sources in the future.
Hardware Efficiency
Every device emits carbon in its creation and destruction. This is called embodied carbon of a device. Thus, hardware is a proxy for carbon, so we need to be hardware efficient to be carbon efficient. This can be done by extending the lifespan of devices or, for cloud computing, increasing your utilization.
Measuring
Measuring is important because, without that, we can’t validate our findings and won’t know how to improve. The greenhouse gas protocol is organizations’ most widely used method to calculate the total carbon emission. However, a total doesn’t tell us the complete story. That’s why the Green Software Foundation came up with the software carbon intensity specification, which calculates the emissions rate from our software.
Software Carbon Intensity (SCI) certification
SCI was created by the standards working group at the Green Software Foundation. The SCI scores your application along the sustainability dimensions and incentivizes reducing carbon emissions. It asks you to bucket the emissions into two categories. The first category is operational emission. These are the carbon emissions that arise from running your application. The second category is embodied emissions from the hardware used to build and run your applications.
Case Study
Let’s look at a case study whereby UBS and Microsoft partnered to put into practice the concept of carbon-aware computing. UBS has a core risk platform on which they run Azure batch workload. And they wanted to see if they could shift these workloads to a different time slot during the day would that carbon emissions come down. They used the Green Software Foundations carbon-aware SDK, an API, and a command line tool that can tell you historical and future carbon intensity data for any compute you run on Azure workload or infrastructure, given that you provide a location and a time period. They found an optimal time slot such that the forecasted carbon intensity was lesser than their current figure. Thus using the software and measuring it, UBS could reduce its carbon emissions.