Sustainable software development

Green IT: Technical implementation of sustainable software

,

Nowadays, we are increasingly "buying" performance with better hardware instead of writing efficient software. This trend is having a negative impact on the sustainability of the software industry. The question therefore arises as to what we can do on the technical side to make software development more sustainable.

What do we mean by inefficient software?

In order to increase the efficiency of our software, we first need to know in what way our software can be inefficient. In general, efficiency is related to the utilization of the hardware on which the software is running. The higher the CPU utilization and RAM consumption, the more energy is required. It is therefore important to minimize the CPU load and RAM consumption caused by our software.

On the other hand, it is important to use the hardware as efficiently as possible. If the load is increased from 10% to 40%, i.e. by a factor of 4, the energy consumption only increases by a factor of 1.7 [1]. For this reason, it makes sense to keep the hardware fully utilized, as energy is also consumed in idle mode.
The two points sound like a contradiction at first. But the whole thing makes sense if you summarize the goal: As many processes as possible should run on as little hardware as possible.

Load-reducing architecture

High load is usually associated with the execution of complex algorithms or the processing of large amounts of data. When working with databases in particular, the load can be reduced, for example, by reusing connections that generate a lot of load. It is also worth thinking about which data is required instead of simply querying all data for the sake of simplicity. If resources or data are no longer used, it is important to clean them up correctly in order to free up RAM.

In addition to optimization within the software, the architecture of the software plays an increasingly important role nowadays. If you divide your software into microservices, it scales much more easily. When traffic is high, you then have the option of quickly ramping up individual components. If the number of requests drops again, the instances can be cleaned up just as quickly. If you look at a monolithic architecture, on the other hand, it is not just the start time that is slower in comparison. The generated load is also significantly higher, as components are potentially started up that are not needed at the moment.
If you look at the entire life cycle of software, you quickly realize that the aspect of saving resources starts much earlier. The software components run through various build pipelines every day, which compile, test and analyze the code. Accordingly, there is potential for savings here. For example, processes such as static code analyses, the results of which do not have to be available immediately, can only be executed at night. Changing triggers for build processes also helps to reduce the total number of builds. Once a pipeline has been successfully completed, the application is often installed directly in various stages. As these do not usually require high availability, resources can also be saved here. Reducing the number of instances is also an option, as is shutting down components at night.

The cloud as the key?

If you summarize the above points, you quickly come to the conclusion that the use of cloud infrastructure is a great help. In addition to the ability to scale services automatically, cloud providers such as Amazon, Google and Microsoft also support resource savings with other features. In addition to the savings in terms of sustainability, you also save costs here. Because you only pay for as much as you use.

The major cloud providers now advertise the sustainability of their products themselves. For example, almost 100% of the infrastructure is operated with renewable energy. Ready-made dashboards also provide an overview of how many resources have been saved by using the cloud compared to conventional data centers [2][3][4].

 

Conclusion: keep an active eye on potential savings

Energy consumption in the IT sector is already huge today and will continue to increase over the next few years. This makes it all the more important to be aware of potential savings and to implement them. With the Green Software Development Manifesto and the community behind it, every developer has the opportunity to get actively involved in the change process.

 

Learn more about GreenIT

 

Sources

[1] https://devblogs.microsoft.com/sustainable-software/sustainable-software-engineering-sse-and-the-role-and-responsibilities-of-a-sustainable-software-engineer/
[2] https://aws.amazon.com/de/about-aws/whats-new/2022/03/aws-launches-customer-carbon-footprint-tool/
[3] https://azure.microsoft.com/de-de/blog/microsoft-sustainability-calculator-helps-enterprises-analyze-the-carbon-emissions-of-their-it-infrastructure/
[4] https://cloud.google.com/carbon-footprint

Marius Dienel

About ME

Marius Dienel is an IT specialist in the field of application development and has been working at doubleSlash since 2019. As a software developer, he has expertise in Java EE, Spring and OSGi, among other things. He also deals with DevOps-related topics for the Business Filemanager product.

All contributions from Marius Dienel

Learn more

Further information on our website and in our newsletter

Arrow up