Principles of Sustainable Software Engineering

Endorse the principles Join the newsletter

Introduction

Sustainable Software Engineering is an emerging discipline at the intersection of climate science, software practices and architecture, electricity markets, hardware and data centre design.

The Principles of Sustainable Software Engineering are a core set of competencies needed to define, build and run sustainable software applications.

These eight principles form a shared understanding of what it means to be a Sustainable Software Engineer independent of:

  • Application domain.
  • Industry.
  • Organization size or type.
  • Cloud vendor or self-hosted.
  • Programming language or framework.

Through the synthesis of this knowledge, a Sustainable Software Engineer (SSE) can make decisions which have a meaningful impact on the carbon pollution of their applications.

Who should read this? permalink

Anyone building, deploying or managing applications.

Summary permalink

  1. Carbon: Build applications that are carbon efficient.
  2. Electricity: Build applications that are energy efficient.
  3. Carbon Intensity: Consume electricity with the lowest carbon intensity.
  4. Embodied Carbon: Build applications that run on older hardware.
  5. Energy Proportionality: Run servers at a high rate of utilization.
  6. Networking: Reduce the amount of data and distance it must travel across the network.
  7. Demand Shaping: Instead of shaping supply to meet demand, try shaping demand to match supply.
  8. Measurement & Optimization: Focus on end-to-end optimizations that increase the overall carbon efficiency.

Applying the principles permalink

Here are a few examples of applying the principles of sustainable software engineering to some common application architectures:

Here are a few examples of applying the principles of sustainable software engineering to some common infrastructure patterns:

  • Virtualized servers
  • IAAS
  • PAAS
  • Databases