If you are working with AWS chances are that you are already operating with the AWS Well-Architected Framework in mind. If not, I urge you to read it as it addresses best practices and design patterns around 5 pillars;
Operational Excellence, Performance, Security, Reliability, Cost Optimization.
Late in 2021, AWS added a new pillar to the Well-Architected Framework,
the Sustainability pillar. In this article, we’ll have a look at this new aspect of the framework, try to understand where exactly it applies and discover some architectural practices that will help us to achieve sustainability for our cloud workloads.
AWS Sustainability Pillar
By introducing Sustainability as its new Pillar of the Well-Architected Framework,
AWS shows its commitment to environmental sustainability. For the past years, AWS’s main focus was digital transformation and bringing more and more customers to the cloud.
As times are changing though, AWS commits to clean up and decarbonize its operations and offerings. They reportedly are using more renewable energy to power data centers and building new data centers with low-carbon materials among other initiatives.
As data is core to addressing problems nowadays the same applies to the climate crisis. AWS has two programs that are facilitating the usage of data for this cause.
Open Data Program allows anyone to host for free any type of useful large dataset and share it with the world and the
Amazon Sustainability Data Initiative helps reduce cost, time, and technical barriers associated with large datasets around sustainability.
AWS claims that customers can potentially reduce their energy usage by 80% compared to on-premises workloads and they are targeting to power 100% of AWS operations with renewable energy by 2025.
As with the Shared Responsibility model, environmental sustainability is a shared responsibility between AWS and its customers.
Anyone running workloads on the cloud is also responsible for their footprint but also bears the responsibility to put the continuous effort in optimizing them primarily on energy reduction and efficiency.
In practice, this new pillar is a tool that shows us the path towards a more sustainable future by highlighting best practices, design principles, and patterns but also helps us understand better our workloads and take ownership of their environmental impact.
Our responsibility as customers lies in making informed architectural decisions, selecting the right services and products while having efficiency and sustainability in mind.
Sustainability Design Principles
Follow these principles when designing workloads and applications on AWS to maximize sustainability while minimizing environmental impact.
Understand your impact
The first step is to get a better understanding of your workloads and impact. Try to create a model of your current and future impact and measure it. Gather all sources of impact and measure the resources needed and the emissions required per unit of work. Establish some metrics and KPIs to follow in order to be able to track improvements over time
Establish sustainability goals
Set reachable sustainability goals such as reducing cloud resources and support owners to invest in these goals. Plan and architect your workloads with these goals in mind to achieve reduced impact intensity based on our decisions.
Utilize your resources wisely and strive to right-size workloads, use elasticity principles whenever possible and implement efficient designs to maximize the underlying energy used by your workloads. Detect and eliminate underused or idle resources and storage.
Anticipate and adopt new, more efficient hardware and software offerings
Stay informed of new offerings and releases, monitor and evaluate new and more efficient product offerings across the whole cloud ecosystem, and design for flexibility to allow changes whenever necessary.
Use managed services
AWS commits to optimize the resource usage of its managed services so opt for them whenever possible to minimize your impact.
Reduce the downstream impact of your cloud workloads
Work with customers and test your services to understand how they use your products and what is the actual impact of this usage. Reduce the amount of energy required to use your products and services.
Improvement Process for sustainability
Of course, all these improvements can’t be achieved from one day to another. To accomplish these goals you have to continually put effort into your architectural decisions, learn from the process, and repeat the cycle.
Identify targets for improvement
Review all your workloads and figure out areas of improvement, low-utilized resources, and bad practices to define your targets.
Evaluate specific improvements
Evaluate possible changes and the outcomes, risk, and cost that these could bring.
Prioritize and plan improvements
Based on the evaluation prioritize accordingly the changes that offer the largest improvement potential and plan for them.
Test and validate improvements
To test your hypothesis and evaluation implement the changes to development environments first in order to validate them before moving forward.
Deploy changes to production
After you have validated the changes, deploy them to production environments across your workloads.
Measure results and replicate successes
The cycle doesn’t end with the deployment to production but continues by measuring the impact, reverting changes that failed, and trying to replicate successful outcomes to other areas and environments.
Make sustainability a non-functional requirement
A byproduct of sustainability as a non-functional business requirement is that your solutions become more cost-effective and efficient. AWS follows a
pay only for what you use model so there is also an extra incentive on utilizing fewer resources and getting more value out of them.
At times, reaching sustainability objectives might require trade-offs in other aspects of the system so experiment continually with sustainability improvements that fit your functional requirements.
Best practices for sustainability in the cloud
Optimize your region selection and workload placement, your software, data, hardware, and other processes to increase energy efficiency. Employ best practices across all these areas and aspects of your cloud usage.
Choose AWS Regions near Amazon renewable energy projects and Regions where the grid has a published carbon intensity that is lower than other locations.
User behavior patterns
Understand the way users consume and use your workloads to identify improvement in terms of sustainability. Scale your infrastructure according to usage, negotiate impact-friendly SLAs with your customers, eliminate maintenance of unused assets, optimize geographic placement of resources.
Software and architecture patterns
Use patterns for consistent high-utilization of resources but also revise them often to consolidate under-utilized components over time. Decommission unneeded components and strive to optimize the performance of your applications. Apply sustainable data access and storage patterns and optimize areas of code that consume the most time or resources.
Curate your overall data management practices and governance to reduce the storage and data transfer required for your applications and products. Leverage lifecycle policies to transition data to less performant data when it’s acceptable and remove unused data.
Continually look for chances to use more efficient hardware and minimize the number of resources needed for your applications. Try to use the most efficient instance type compatible with your workload(e.g. AWS Graviton processor) and use burstable instances to support workloads with infrequent requirements.
Development and Deployment process
Create a culture of experimentation around sustainability objectives and test them before deploying to production. Keep your systems up-to-date to gain performance efficiencies. Use automation to manage the lifecycle of dev and test environments and shut them down when they aren’t used.
For more details check the official AWS documentation for the Sustainability Pillar.
That’s all folks, hope you enjoyed it as much as I did. We had a look into the new AWS Sustainability Pillar of the AWS Well-Architected Framework and pinpointed different design principles and best practices that we can follow to make informed decisions towards improving the sustainability of our cloud usage.