Software Sustainability
Eight Principles
- Carbon: Build applications that are carbon efficient.
- Electricity: Build applications that are energy-efficient.
- Carbon Intensity: Consume electricity with the lowest carbon intensity.
- Embodied Carbon: Build applications that are hardware efficient.
- Energy Proportionality: Maximize the energy efficiency of hardware.
- Networking: Reduce the amount of data and distance it must travel across the network.
- Demand Shaping: Build carbon-aware applications.
- Optimization: Focus on step-by-step optimizations that increase the overall carbon efficiency.
Two Philosophies
- Everyone has a part to play in the climate solution.
- Sustainability is enough, all by itself, to justify our work.
Quotes
The carbon produced by transferring 1GB of data over a network is 1.22kg
- The more you utilize a computer, the more efficient it becomes at converting electricity to useful computing operations.
- Running your work on as few servers as possible with the highest utilization rate maximizes their energy efficiency. -So carbon-efficient applications focus on reducing the amount of data and distance it travels.
- A 2019 study by The Shift Project proposed a 1-byte model for estimating the energy used in the transmission of data. To estimate the kWh, multiply the total megabytes of your traffic by 0.0023.
- To convert to carbon, we use the average global carbon intensity of 519 gCO2eq/kWh, multiply with 0.519 to get kilograms of carbon. Using this model, we estimate transmitting 1 GB would result in 1024 ✕ 0.0023 ✕ 0.519 = 1.22 kilos of carbon emitted.
- Sustainability isn’t one optimization, it’s thousands.
- The key to success in optimization is to choose a measurement criterion that will give clear signals as to where best to put optimization efforts.
- There are devices, tools, and libraries available to measure the energy consumed by an application.