7. Demand Shaping

Build carbon-aware applications.

Demand shifting is the strategy of moving workloads to regions or times when the carbon intensity is less, or to put it another way when the supply of renewable electricity is high.

Demand shaping is a similar strategy, but instead of moving demand to a different region or time, we shape our demand, so it matches the existing supply.

If supply is high, increase the demand - do more in your applications - if the supply is low, decrease demand - do less in your applications.

A great example of this is video conferencing software. Rather than streaming at the highest quality possible at all times, they often shape the demand by reducing the video quality to prioritize audio.

Another example is TCP/IP. The transfer speed ramps up in response to how much data can broadcast over the wire.

A third example is progressive enhancement with the web. The web experience improves depending on the resources and bandwidth available on the end-users device. How To Measure The Power Consumption of Your Frontend

Carbon-aware vs. carbon-efficient permalink

Carbon efficiency can be transparent to the end-user. You can be more efficient at every level in converting carbon to useful functionality while still keeping the user experience the same.

But at some point, being transparently more carbon-efficient isn't enough. If the carbon cost of running an application right now is too high, we can change the user experience to reduce carbon emissions further. At the point the user is aware the application is running differently, it becomes a carbon-aware application.

Demand shaping carbon-aware applications is all about the supply of carbon. When the carbon cost of running your application becomes high, shape the demand to match the supply of carbon. This can happen automatically, or the user can make a choice.

Eco-modes permalink

Eco-modes are often used in life: for instance in cars or washing machines. When switched on, the performance changes as they consume fewer resources (gas/electricity) to perform the same task. It's not cost-free (otherwise, we would always choose eco-modes), so we make trade-offs. Because it's a trade-off, eco-modes are almost always presented to a user as a choice, and the user decides if they want to go with it and accept the compromises.

Software applications can also have eco-modes which when engaged changes application behavior in potentially two ways:

  • Intelligence. Giving users information so they can make informed decisions.
  • Automatic. The application automatically makes more aggressive decisions to reduce carbon emissions.

Summary permalink

Demand shaping is related to a broader concept in sustainability, which is to reduce consumption. We can achieve a lot by becoming more efficient with resources, but at some point, we also just need to consume less. As Green Software Engineers to be carbon-efficient means perhaps when the carbon intensity is high, instead of demand shifting compute, we consider canceling it. Reducing the demands of our application and the expectations of our end users.

All Principles permalink

  1. Carbon   Build applications that are carbon efficient
  2. Electricity   Build applications that are energy efficient
  3. Intensidad de carbono   Consuma electricidad con la mínima intensidad de carbono
  4. Carbon Intensity   Consume electricity with the lowest carbon intensity
  5. Embodied Carbon   Build applications that are hardware efficient
  6. Energy Proportionality   Maximize the energy efficiency of hardware
  7. Networking   Reduce the amount of data and distance it must travel across the network
  8. Moldeo de la demanda   Crear aplicaciones que sean conscientes del carbono que emiten.
  9. Demand Shaping   ▶ Build carbon-aware applications. ◀
  10. Measurement & Optimization   Focus on step-by-step optimizations that increase the overall carbon efficiency