Sustainable software engineering
Sustainability is being implemented by more and more entities. After all, the welfare of the planet is the welfare of all of us and future generations. And is it possible to be guided by sustainability principles when developing digital products? Sustainable software engineering proves that it most definitely is. By incorporating environmentally friendly software development principles into operations and products, developers and other people in the ICT industry can change the world for the better.
ICT industry development vs. energy consumption
The development of the ICT (Information and Communications Technology) industry in recent decades has led to a significant increase in electricity consumption. In 2010, it was 2,000 TWh (as a reminder, one terawatt hour is one billion kilowatt hours), and is projected to rise to 8,000 TWh in 2030. In addition, the percentage of electricity consumed by ICT is expected to increase from 5% in 2012 to about 21% in 2030.
What is sustainable software engineering?
Sustainable software engineering or green software engineering is a newly emerging discipline at the intersection of climate science, software development practices, electricity markets, hardware design and data centers.
Following the principles of sustainable software engineering means creating environmentally friendly software. More and more developers are paying attention to so-called “green IT.” They create applications in such a way that it has an impact on reducing carbon emissions into the atmosphere.
Of course, the main reason why people in the ICT industry follow the principles of sustainable software engineering is the desire to support the idea of sustainable development. However, these actions have additional benefits – the resulting applications are often cheaper, more performant and, interestingly, often more resilient.
Eight principles of sustainable software engineering
The principles of sustainable software engineering are a core set of competencies needed to define, develop and release green, sustainable applications. They have been developed by Asim Hussain, Green Cloud Advocacy Lead at Microsoft. They create a picture of an environmentally responsible software engineer – regardless of industry, company size, programming language, expertise, etc.
1. Build applications that are carbon efficient
Production processes involve the emission of carbon dioxide (CO2). Efficiency for carbon emissions is about minimizing the amount of CO2 sent into the atmosphere per unit of work. The goal of sustainable software engineering is to get the most value out of every gram of carbon emitted into the atmosphere. Engineers should therefore create applications that are of equal value to users, with reduced CO2 emissions.
2. Build applications that are energy efficient
Software developers often do not consider the amount of electricity their applications consume. This is an externality – a problem for consumers and the environment. A sustainable software engineer takes responsibility for the electricity used by the applications he or she prepares. They are designed to consume as little of it as possible.
3. Consume electricity with the lowest carbon intensity
Renewable energy power plants make it possible to reduce carbon dioxide emissions. If we use 100% renewable energy, the CO2 intensity is close to zero. Achieving an oversupply of energy, thanks to renewable sources, increases the chances of temporarily shutting down power plants that emit carbon dioxide into the atmosphere.
There are examples of servers operating entirely on green energy. One example is a data center in Nevada that is powered by solar panels and a Tesla Megapack energy storage system.
Some companies, such as Google, use tools such as Electricity Map or other carbon intensity APIs to adapt computing tasks to times of high availability of low-carbon energy.
4. Build applications that are hardware efficient
One strategy for increasing hardware efficiency is to extend the life of the hardware, which reduces the annual carbon cost. Engineers can design software that is resource-efficient and can run smoothly on older devices.
In addition, by designing software that is energy efficient, they contribute to reducing the number of charging cycles per time interval for devices such as laptops, tablets and smartphones. In this way, they are contributing to their longer lifespan, thereby reducing the carbon cost for these devices.
5. Energy Proportionality
Energy proportionality is a measure of the correlation between the power consumed by a computer system and the speed at which useful activities are performed (its utilization). Servers are usually not configured for energy conservation. Many companies demand their full capacity as quickly as possible.
This can lead to many servers being left in idle mode during periods of low energy demand. Leaving a device in this mode is associated with inefficient use. The greenest (and most efficient) approach is to run as few servers as possible with the highest utilization.
6. Reduce the amount of data and distance it must travel across the network
When data is sent over the Internet, it passes through many devices, and each device consumes energy. As a result, any data you send or receive over the Internet emits CO2 into the atmosphere. Sometimes giving up sending just a small amount of data can have quite a positive impact on the environment.
7. Demand shaping
Demand shaping is a technique that adjusts the energy demand of an application to the current supply of “green energy.” To trigger it, the application must be carbon-aware, for example by using one of the available carbon intensity APIs.
Demand shaping can be done automatically or by giving users choices, such as a “green mode” option. This is akin to progressive upgrading, in which the system adjusts energy consumption based on the current energy supply.
8. Measurement and optimization
Sustainability is not one optimization but thousands. Developers should look at the whole process and take action step by step. The effort put into understanding it leads to simple solutions that greatly improve carbon efficiency. It is also good practice to weigh the effects of the actions required to decarbonize against their potential benefits.
The key to the success of optimization is to choose a measurement criterion that indicates where it is best performed. For example, is it worth spending two weeks to reduce megabytes in network communications if database queries result in 10 times more CO2 emissions?
At Exorigo-Upos, under the name Go Green Retail, we undertake a variety of environmentally friendly initiatives regarding energy, time, or cost savings for the customer.