Sustainability and Software Development: Properly Prioritise Your Actions
Tags: devops, cloud, aws
Published: 2022-10-13 19:24:41

### TL;DR

We should take every possible action to limit our carbon footprint. Nevertheless, prioritise those actions based on impact (see the priority table below).

## The Sustainable Pillar

In today's world, sustainability should be a concern. Information Technology (IT) goes with that flow, having climate concerns put on most agendas. Regarding cloud computing, it’s nice to see that [AWS](https://docs.aws.amazon.com/wellarchitected/latest/sustainability-pillar/sustainability-pillar.html), [Google Cloud](https://cloud.google.com/sustainability), and [Azure](https://azure.microsoft.com/en-us/explore/global-infrastructure/sustainability/#overview) made sustainability part of their strategy.

As a cloud engineer, the following article was recently brought to my attention: [Python is Destroying the Planet](https://levelup.gitconnected.com/python-is-destroying-the-planet-951e83f22748). The article has good content, but I had many concerns after reading it.

## Context is Everything.

To summarize, the article is about measuring energy efficiency of programming languages and  concludes with an open question. The latter opens the door for people jumping to the wrong conclusions or even worse, taking improper action. :fearful:

Based on the article, I came up with the following metaphor.

> Let’s say a parcel needs to ship from Belgium to Rome with the lowest carbon footprint. Therefore the package is loaded into a truck. Although it's a hot summer day, the driver - concerned about the planet - pushes himself to the limit. To further reduce the carbon footprint, he turns off the air-conditioning to save some gasoline.

![Truck Driver](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h1sd2yxob299axsd7dpg.png)

Although the driver’s intentions are good, I immediately ask myself the following questions:

- Did that parcel have to ship to Rome? Is there any value in doing this? Maybe it’s just an empty box?
- Did the truck take the shortest or fastest route?
- Was the truck loaded at full capacity?
- Were the truck’s tires inflated sufficiently?
- Given the parcel dimensions, what were the other freight options?
- ...

My point? The intentions are correct, but turning of the airconditioning is no more than a drop in the ocean compared to  the outcome of the above questions! The effect of answering those questions could impact a few magnitudes bigger than turning off the airconditioning.


## Carbon footprint measures for IT prioritized

**With multiple options available, it’s better to apply the one with the most impact first.**

Concerning IT sustainability, I prioritize actions as follows:

1. **The business case**: There has to be value in the software written to begin with!  For example:
  - There's  no value in a Petabyte data lake without data access
  - There's no value in calculated predictions that are applied nowhere
  - You get the point ;-)
- **Energy input**: is the data center running on green energy? If yes, everything else becomes irrelevant because there’s no carbon footprint. (Yes, a bit simplistic, but again, you get the idea)
- **Energy output**: is the residual heat of the data center reused?
- **Technology**: Cloud Native, Serverless, CQRS, ...
- **Elasticity**:
  - Are things shut down when not in use
  - A low baseline and scale-out when needed
- **Clean code**
- ...
- ...
- **Programming language**: is the language used energy efficient?
- ...

It would be wrong to state that the choice of programming language has no impact on carbon footprint. But before digging deeper into that, many other things could yield much more with less effort.
 
## To wrap up
When thinking about sustainability, properly prioritize your efforts toward limiting your carbon footprint.

Running your workloads in the cloud is likely already a step in the right direction because cloud providers have usually a lower carbon footprint and are more energy efficient than typical on-premises alternatives. This is because they invest in efficient power and cooling technology, operate energy-efficient server populations, and achieve high server utilization rates.

Cloud workloads reduce impact by taking advantage of shared resources, such as networking, power, cooling, and physical facilities. The incentive to run as optimized as possible is also much bigger for those big providers.

Enjoy and until next time!