Explaining Sustainable Software Engineering - Part 1
The Sustainability Pillar
This post is part of a planned series where I introduce designing and architecting sustainable workloads in the AWS Cloud.
We will introduce the fundamental concepts of sustainability and its importance, talk about waste, then explore how the AWS Well-Architected pillars can be implemented through the lens of Sustainable Engineering.
What Is Sustainability?
Sustainability is often defined as meeting our needs without compromising the ability of future generations to meet their own needs. All resources that we utilize come from the environment one way or another. To be sustainable means setting up practices and processes to consume these resources consciously to prevent the depletion of the source of such resources.
The concept of sustainability applies to all resources needed for our human society to continue; this includes natural, social, and economic factors.
Everything we do, if we want to continue to do it, needs to be sustainable.
Why Is Sustainability Important?
Sustainability is essential to create and maintain the conditions needed for our human society and the natural environment to coexist and thrive, enabling the prosperity of the current and future generations.
Human perception is often limited by the period of our lives, from 70 to 80 years if we are lucky. Processes that take over 30 years to be measurable are often imperceptible to our minds. The practice of sustainability ensures that we are thinking ahead of our own current needs into centuries in the future.
A Few Words on Emissions and Carbon
Our world runs on digital technology that uses electricity to operate. In generating this electricity, we produce waste in the form of greenhouse gases.
Greenhouse gases trap heat in the atmosphere, allowing global temperatures to rise. Carbon dioxide (CO2) is the most common greenhouse gas emitted by human activity. It enters the atmosphere due to burning fossil fuels, solid waste, and trees. Other common greenhouse gases are Methane (CH4), Nitrous oxide (N2O), and Fluorinated gases.
The concept of CO2 Equivalent, abbreviated as CO2-eq, is a metric used to transform the impact of the other greenhouse gases to Carbon to simplify impact calculations.
Currently, the largest corporations have dedicated efforts to reduce CO2-eq emissions. Their work is only a drop in the bucket compared to small and medium-sized companies' aggregate emissions footprint that doesn't take CO2-eq emissions into account. We must strive to make sustainability efforts a concern for all.
Not all electricity is created equal; distinct regions of the planet are at different stages in their journey to cleaner energy production. The concept of Carbon intensity adjusts how much CO2-eq gases are emitted in the production of a kilowatt-hour (kWh) of energy.
For example, electricity generated from coal-burning is more Carbon intense than the electricity generated by a wind turbine or a solar power plant.
Sustainability In the Cloud
Cloud computing has leveled the playing field regarding access to technology. Anyone with interest can access computing resources previously only available to large corporations. In most cases, the Cloud abstracts away the need to worry about hardware resources, physical location, and electricity requirements, delegating this responsibility to the Cloud provider.
The Shared Responsibility Model defines areas where responsibility is shared between the cloud provider and the consumer. While model document often focuses on Security and Compliance, we must also consider sustainability a shared commitment.
The Cloud Infrastructure has many flavors, from fully managed services in the Software as a Service (SaaS) and Platform as a Service (PaaS) models to dedicated metal servers and virtual machines of various sizes in the Infrastructure as a Service (IaaS) model. Deciding which technology to use will impact the emissions of the workload.
What Is Our Responsibility?
Our responsibility when designing for sustainability is to use all the resources we have available in a conscious way; this also applies to Cloud resources. Here are a few important questions we can ask to increase the compute efficiency:
- What type of cloud offering fits the workload better?
- How can we reduce wasted compute overhead?
- How will the system scale as new customers get onboard? Will power consumption increase with new customers?
- Does the system require to be constantly running?
- How can we ensure this workload is powered with renewable energy?
In part 2, I plan to provide a framework to answer these questions.