Achieving 2030 Sustainable Development Goals using Cloud
Sustainable Software Engineering is an emerging concept that continues to evolve as the developer community becomes more engaged. In this post, I will discuss the various levers that Microsoft and the development community have on hand to maximize the promise of sustainable development and growth. I will also explore various tools that the Microsoft developer community can use to develop more sustainable software and accelerate progress towards 2030 Sustainable Development Goals.
Given this post’s focus on Sustainable Software Engineering, I want to define what exactly ‘sustainability’ means. The UN World Commission on Environment and Development offers that, “Sustainable development is development that meets the needs of the present without compromising the ability of future generations to meet their own needs.” While this is probably one of the more frequently quoted definitions of sustainability, I find a visual representation of sustainable development principles more actionable.
The concept of a ‘doughnut’ was first published by Kate Raworth in the 2012 Oxfam Report, and since has gained wide acceptance in the sustainable development community. The doughnut is derived from two boundaries – a social foundation and an ecological ceiling. In her 2017 book, “Doughnut Economics: seven ways to think like a 21st century economist,” Raworth argues that the social foundation is complimentary of the ecological planetary boundary. Basic human needs such as food, clean water, education, equality, and social justice can be met without access to a regenerative and healthy ecological environment.
Social foundation and ecological ceiling principles are also reflected in the 17 Sustainable Development Goals published by the United Nations in 2015.
While the 17 goals published by the UN may seem to cover a very broad set of issues, after examining them closer, it becomes apparent that they are interconnected via positive and negative feedback loops. Måns Nilsson, Dave Griggs, and Martin Visbeck published a detailed explanation of how these goals either reinforce or cancel each other out. The authors provide an example of these positive and negative interactions (shown in the table below):
Real World Example
Inextricably linked to the achievement of another goal.
Ending all forms of discrimination against women is indivisible from ensuring a women’s full and effective participation and equal opportunities for leadership.
Aids the achievement of another goal.
Providing access to electricity reinforces water-pumping and irrigation systems. Strengthening the capacity to adapt to climate-related hazards reduces losses caused by disasters.
Creates conditions that further another goal.
Providing electricity access in rural homes increases education opportunities because it makes it possible for students to complete homework at night with electric lighting.
No significant positive or negative interactions.
Ensuring education for all does not interact significantly with infrastructure development or conservation of ocean ecosystems.
Limits options on another goal.
Improved water efficiency can constrain agricultural irrigation. Reducing climate change can constrain options for energy access.
Clashes with another goal.
Boosting consumption for growth can counteract waste reduction and climate mitigation.
Makes it impossible to reach another goal.
Ensuring public transparency and democratic accountability cannot be combined with national-security goals. Full protection of natural reserves excludes public access for recreation.
The UN also provides a practical example to demonstrate goals and their interactions that you can find here.
So, what does it mean for the cloud?
As a program manager working on the Microsoft Azure team, I see several opportunities to apply sustainable development principles across various dimensions that will ultimately create a self-reinforcing loop between Microsoft and the developer community. As Microsoft pursues its mission to** “empower every person and every organization on the planet to achieve more**,” the developer community can use the tools and services to help the world reach its 2030 Sustainable Development Goals as Microsoft pursues its own 2030 pledge to become carbon negative.
Building Blocks for Sustainable Development on Azure
Cloud Infrastructure is the base infrastructure required to run cloud applications. The infrastructure consists of hundreds of data centers across the world, thousands of miles of fiber optic cables, as well as millions of servers running in these data centers.
While the software itself has a low environmental impact, the infrastructure required to run the software could have a drastic negative impact. From raw material extraction, the manufacturing of components, assembly, and deployment, Microsoft cloud infrastructure represents a significant portion of Microsoft’s carbon footprint. Microsoft’s pledge to be carbon negative by 2030 includes a strong commitment to transforming its supply chain to a circular cloud supply chain with the goal of minimizing embodied carbon in the hardware it operates, optimizing the efficiency of its physical infrastructure, and minimizing end of life e-waste.
Azure Fabric is the operating system of the cloud. Azure Fabric manages physical resources such as computers, storage, and networks, and is responsible for ‘always-on availability’, self-healing, optimization of available resources, and scale. While invisible to the end customers and developers, the Azure team continuously works on optimizing the efficiency of the physical infrastructure while delivering on the promise of being the best platform to develop cloud applications and services.
The Azure developer community can leverage Azure services to build end-user applications – whether these are mission-critical enterprise workloads, distributed Internet of Things (IoT) applications, mobile services, Artificial Intelligence (AI), or media applications – all can be done on Azure. This is also where the core of Sustainable Software Engineering practices come into play.
Software engineers building applications on Azure can apply Sustainable Software Engineering principles to minimize the carbon footprint of their applications. For example, large batch jobs can be scheduled to run when carbon intensity of the power grid is at its lowest peak.
You can check carbon intensity cycles in your region (or country) on the Electricity Map website. Watttime project also offers API access to carbon intensity data that can be used to programmatically schedule and time-shift power-intensive computer workloads in time and geography.
In addition to maximizing the use of renewable energy sources, developers can achieve significant carbon savings thereby optimizing networking resources, as covered in my previous post.
However, the impact that the developer community can have on sustainable development should not stop there. Developers can leverage Azure to build smart applications that can help reinforce all 17 Sustainable Development Goals.
Sustainable Software Engineering
Building applications that can directly and indirectly (such as through feedback loops) help the world achieve the UN Sustainable Development Goals is how I choose to think about Sustainable Software Engineering. Microsoft will continue to invest its resources to further optimize its cloud infrastructure, power consumption, server, and network efficiency as well as building smart and efficient developer tools and services. As the developer community, we can use these tools and infrastructure to build tools and applications that serve longer-term objectives such as improving biodiversity, reducing carbon, promoting equality, access to education, health, and freshwater.
As an example, the AI for Earth initiative relies on high-performance computer infrastructure to process massive amounts of satellite data, perform image recognition, and process sophisticated climate simulation and optimization tasks, all with the goal of unlocking insights and actionable interventions that will improve biodiversity, access to clean water, sustainable agriculture, and health.
So, when we measure whether software is sustainable, it’s important to take into account the environmental impacts of the infrastructure, power consumption, and efficiency of the code, as well as the outcomes that the software enables. We can use the 17 Sustainable Development Goals as a guide and a litmus test of the impacts our applications have on the world around us.