An ever-increasing number of intelligent software solutions on the market is fueling the latest innovations in Artificial Intelligence (AI), digital technologies, and other essential applications, but these come with a real price to the environment. What impact is software development having on our carbon footprint, and how can it be mitigated?
Read on for the first in our blog series of Green Software Development, where we explore best practices that will help enterprises and developers limit their carbon footprint while building applications with a sustainability-first agenda.
Research shows that business use of software is on the rise, and the energy-intensive nature of its design and development is impacting the environment.
The number of software applications deployed by large firms across all industries worldwide has increased 68 percent over the past four years, according to an analysis by Okta Inc. cited in the Wall Street Journal. Recent findings hint that training a single AI model can emit as much carbon as five cars in their lifetimes.
As enterprises embrace the triple-bottom-line-framework of social, environmental, and financial impact, a better understanding of the impact of these digital transformation initiatives on our planet is needed to effectively address these crucial issues.
Hence, the concept of green computing becomes imperative, and greenness in software is emerging as a quality attribute.
Green software foundation
More firms than ever before are making commitments to be carbon neutral, or carbon negative as the world attempts to confront the critical carbon dilemma.
Accenture, GitHub, Microsoft, and ThoughtWorks are among the companies that have made commitments to help address the global climate crisis. They have come together to form the nonprofit Green Software Foundation to build a trusted ecosystem of people, standards, tooling, and leading practices for building green software.
The Green Software Foundation is a significant step for the software development industry to manage its carbon footprint and work towards reducing or eliminating it wherever possible. The graphic below illustrates the three pillars that form the basis of the foundation and its steering members:
However, software relies on hardware to run. As power is physically supplied to machines, energy costs are naturally associated with hardware and are most visible in the data center where they increase costs significantly. While most existing research on green IT focuses on the energy efficiency of hardware, a greater focus is needed on the software development side.
Trends shaping green software development
We see the following three key trends being critical to shaping green software development going forward:
- High-performance coding standards
- Building self-adaptable solutions
- Code reusability
High-performance coding standards: Going forward, the focus should be on building carbon-efficient applications with the goal of achieving carbon-neutrality. Enterprises should aim to get the most value out of the application for every unit of carbon it is responsible for emitting into the environment.
However, we see a lot of overlap between making an application greener and also faster and cheaper. For existing applications, refactoring can be a very powerful strategy to eliminate useless code, paving the way for energy efficiency and carbon-aware applications.
For net-new application development, below are some key recommendations for green developers:
- Control flows within applications should be monitored and optimized. Energy is inefficiently used when an application repeats the same activity in a loop without achieving the intended results and uselessly consumes energy (e.g., polling an unreachable server)
- Data exchanged between software applications and/or databases (local or remote) can be optimized using data compression or data aggregation techniques. The energy impact from optimization like this can be crucial in data-intensive and Big Data applications
- Interaction with the hardware layer must be enhanced through code. With the increasing footprint of Internet of things (IoT) applications, this becomes crucial as the number of peripheral devices increases exponentially
Building self-adaptable solutions: By providing different configurations of the same application and activating them at varying times, a trade-off can be achieved between the features provided and the energy consumed. This is very similar to defining the eco-mode of operation for applications used for cars and appliances. Compared to refactoring, self-adaptation introduces a relevant set of changes to the software system and is more of an architectural concern.
Tools available in the market can be very useful to ensure enterprises are making energy-saving decisions from the start. For Android apps, Android Studio has a built-in energy profiler that estimates the energy consumption of the CPU, the network radio, and GPS sensors as well as showing the occurrence of different system events that may affect energy consumption. When developing iOS apps in XCode, a similar profiler can be used for debugging.
Newer application architectures – such as serverless computing or functions-as-a-service (FaaS) – enable even more control over capacity and, by extension, energy consumption.
Reusability of code: Reusing components of code and automating repetitive tasks can reduce the overall development time and, thereby, energy consumption. Reusable code components also come with the added advantage of being defect-free. This can shorten the application testing time and fix defects in the production environment, which, in turn, will have a net-positive environmental impact.
The emergence of a multitude of low-code/no-code platforms can further aid in this process. These platforms can deliver applications at ten times the speed compared to the traditional software development approach, which implies a direct 90 percent reduction in energy consumption per application development.
When combined with AI-assisted development, this can further the scope of reducing the global carbon footprint of applications. We expect that using AI for applications has the potential to boost global GDP by around 3-5% while also reducing the global greenhouse gas emissions by around 2-4% by 2030 relative to business-as-usual. Microsoft’s recent announcement introducing GitHub Copilot, which aims to make AI-assisted development the new norm, is a big stride in that direction.
As we gear up for an eco-friendly tomorrow, green software development is emerging as the next logical step for technology providers, software integrators, and other players in the value chain.
We can expect CIOs to push for more optimized energy consumption in their organizations. From an application development perspective, this can be realized through the ideal use of location services, timers, and notifications – optimizing media and images, and reducing the amount of data being transferred between the server and the app. It also will require enterprises to relook at gathering requirements and documenting design from a green development lens.
More research will be needed to measure the real-time carbon footprint at the code level. As a result, the definition of full-stack development will evolve from its current focus on website and database development to involve managing user behavior on how electricity is bought and sold on a grid in the future.
Going forward, participation from more and more enterprises in this green mission of building a sustainable future seems inevitable and essential.
In our next blog in this series, we will share a checklist enabling enterprises to adopt a greener approach to application modernization and maintenance, ensure green governance, and achieve a green quality index for applications.