AWS Well-Architected Framework: A Comprehensive Introduction for EngineersBuild Cloud Systems That Last - Understanding the Foundation, Pillars, and Practical Application of AWS's Architecture Bible

Introduction

Every sufficiently complex cloud system eventually confronts the same set of questions: Is this architecture secure enough? Will it hold up under load? Are we spending more than we need to? Can we recover when something goes wrong - and something always goes wrong? For years, the answers to these questions lived in scattered internal documents, tribal knowledge passed from senior engineers to juniors, or expensive consultant engagements. In 2015, AWS formalized a response: the Well-Architected Framework.

The framework is deceptively simple in form - a set of design principles and best practices organized around six thematic pillars - but it encodes decades of hard-won operational experience from running one of the world's largest cloud platforms. It is not a prescriptive rulebook. It doesn't tell you what to build. Instead, it provides a structured lens through which to evaluate how you're building, surfacing trade-offs you might not have considered and risks you might not have noticed. For any engineer working seriously with AWS, understanding this framework is not optional background reading. It is table stakes.

This post is a ground-up introduction to the AWS Well-Architected Framework: what it is, why it exists, how its pillars work together, and how to apply it in practice. We'll cover the mental models that make it useful, the common mistakes people make when engaging with it, and the practical steps you can take starting today.

Context: Why Architecture Frameworks Matter

The Cost of Undisciplined Cloud Architecture

Cloud infrastructure lowers the barrier to building. With a few API calls or clicks, an engineer can provision databases, compute clusters, message queues, and content delivery networks. This democratization is genuinely powerful - but it also means that architectural mistakes reach production faster than ever. A misconfigured S3 bucket becomes a public data breach. An under-provisioned RDS instance becomes a latency crisis during a product launch. A missing IAM boundary becomes an attack vector.

The challenge isn't that engineers are careless. It's that the decision surface in cloud architecture is enormous. Security, reliability, cost, performance, and operational simplicity all pull in different directions simultaneously. Without a shared vocabulary and evaluation framework, teams optimize locally and create systems that are fragile in ways no single contributor intended.

AWS's Answer: A Living Framework

AWS published the first version of the Well-Architected Framework in 2015, drawing on the accumulated architecture review experience of its Solutions Architects. The framework has been updated regularly since then - most recently expanding to six pillars with the addition of Sustainability in 2021. It is freely available, built directly into the AWS Management Console via the Well-Architected Tool, and underpins how AWS's own professional services team reviews customer architectures.

The framework operates at three levels: design principles that guide decision-making, questions that surface potential issues, and best practices that provide actionable guidance. The intent is not to achieve a perfect score on a checklist, but to make architectural trade-offs explicit and conscious. AWS is clear on this point: sometimes deviating from a best practice is the right call - the framework just asks that you understand the risk you're accepting when you do.

The Six Pillars: Core Technical Explanation

The Well-Architected Framework is organized around six pillars. Each pillar addresses a distinct dimension of system quality, though in practice they are deeply interconnected. Understanding each pillar individually, and then as a system, is the foundation of effective architecture review work.

Pillar 1: Operational Excellence

Operational Excellence is about running and monitoring systems to deliver business value and continually improve supporting processes. It sounds abstract, but its concerns are very concrete: How do you deploy changes safely? How do you respond to events? How do you learn from failures?

The pillar is grounded in five design principles. Perform operations as code - use infrastructure-as-code and runbooks written as executable automation rather than human-readable SOPs that drift from reality. Make frequent, small, reversible changes rather than large infrequent deployments that accumulate risk. Anticipate failure by designing for operational failure scenarios - game days, chaos engineering, and pre-mortem exercises are all expressions of this principle. Learn from all operational events and failures by maintaining blameless post-mortems and feeding insights back into process improvement.

One underappreciated aspect of this pillar is its emphasis on telemetry and observability. AWS encourages annotating systems with enough operational data - structured logs, distributed traces, custom metrics - that the system can "tell you" what it's doing without requiring you to infer it. CloudWatch, X-Ray, and CloudWatch Evidently are the primary AWS services that operationalize this principle, but the pillar is service-agnostic.

Pillar 2: Security

Security is the practice of protecting information, systems, and assets while delivering business value through risk assessments and mitigation strategies. AWS organizes this pillar around seven design principles, the most architecturally significant of which are: implement a strong identity foundation, enable traceability, apply security at all layers, protect data in transit and at rest, and prepare for security events.

The "apply security at all layers" principle deserves particular attention because it pushes back against the common pattern of treating security as a perimeter concern. In a well-architected system, security controls exist at the VPC level, the subnet level, the instance level, the application level, and the data level. Defense in depth is the operative concept. An attacker who compromises one layer should face meaningful resistance at the next.

IAM is the central nervous system of AWS security. The Well-Architected Framework consistently emphasizes least-privilege access - every principal (user, role, or service) should have only the permissions it needs to perform its specific function. This is harder to implement than it sounds, because least-privilege requires ongoing maintenance as systems evolve. The Security pillar asks you to audit your IAM posture continuously, not just at initial setup.

Pillar 3: Reliability

Reliability encompasses the ability of a workload to perform its intended function correctly and consistently, including the ability to operate and test at the expected workload level. This pillar is particularly rich because it addresses failure both as an engineering design problem and as an operational one.

The pillar distinguishes between high availability (the system continues to serve requests even when components fail) and resiliency (the system can recover from disruptions and return to normal operation). These are related but not identical goals. A highly available system might use multi-AZ deployments to mask failures from users. A resilient system ensures that when something does fail, the recovery process is fast, automated, and well-understood.

The key design principles here are: automatically recover from failure, test recovery procedures, scale horizontally to increase aggregate system availability, stop guessing capacity, and manage change in automation. The capacity planning point is worth dwelling on. In the pre-cloud era, capacity planning was a discrete activity that happened infrequently. In AWS, capacity should be a dynamic property of your system, managed by Auto Scaling groups, Spot Instances, and demand-based provisioning - not a fixed configuration you set once and hope holds up.

Pillar 4: Performance Efficiency

Performance Efficiency is about using computing resources efficiently to meet system requirements and maintaining that efficiency as demand changes and technology evolves. Where Reliability asks "does it work?", Performance Efficiency asks "does it work well enough under the constraints you have?"

The democratization of advanced technologies is one of the pillar's core principles. AWS provides managed services for machine learning, graph databases, time-series databases, ledgers, and dozens of other specialized workloads. The Performance Efficiency pillar encourages using purpose-built services - DynamoDB for key-value workloads, Aurora for relational workloads, ElastiCache for caching - rather than forcing every use case onto general-purpose infrastructure. The right tool for the job is a Performance Efficiency concern as much as it is a cost concern.

Mechanical sympathy - a term borrowed from motorsport, popularized by LMAX's Martin Thompson - applies here. Efficient cloud systems are built by engineers who understand how their AWS services actually work at a low level: how DynamoDB partitions data, how Lambda cold starts affect latency, how EBS I/O credits work. The Well-Architected Framework doesn't go deep on these mechanics, but it directs you toward the evaluation questions that surface mismatches between workload characteristics and infrastructure choices.

Pillar 5: Cost Optimization

Cost Optimization is the ability to run systems to deliver business value at the lowest price point. This is the pillar that is most frequently treated as an afterthought - addressed after a surprise cloud bill rather than as an upfront design constraint.

The pillar's design principles challenge the common pattern of over-provisioning for peak load. Adopt a consumption model: pay only for what you use, and use what you pay for. Measure overall efficiency: track cost per unit of business output (cost per API call, cost per processed record, cost per active user) rather than just absolute spend. Avoid spending money on undifferentiated heavy lifting: let AWS manage infrastructure so your engineers focus on what makes your product unique.

Practical Cost Optimization often starts with visibility. AWS Cost Explorer, Cost Allocation Tags, and AWS Compute Optimizer are the primary tools for understanding where spend is going and where waste exists. Savings Plans and Reserved Instances provide substantial discounts (up to 72%) in exchange for committed usage. Right-sizing - choosing the correct instance type and size for a workload - is frequently the single highest-ROI optimization available, because over-provisioned compute is endemic in organizations that haven't made cost a first-class concern.

Pillar 6: Sustainability

Added in December 2021, the Sustainability pillar addresses the environmental impact of running cloud workloads. It is the newest and least prescriptively developed of the six pillars, but its direction is clear: workloads should minimize unnecessary resource consumption, maximize utilization of provisioned resources, and leverage AWS's investments in renewable energy.

The pillar's design principles include understanding your impact (measuring the energy and carbon footprint of your workloads), establishing sustainability goals, maximizing utilization, anticipating and adopting newer more efficient offerings, using managed services, and reducing the downstream impact of your cloud workloads. AWS publishes a Customer Carbon Footprint Tool that gives organizations visibility into the estimated carbon emissions associated with their AWS usage.

The Sustainability pillar has direct overlap with Cost Optimization - a workload that wastes compute is both expensive and environmentally inefficient. But it also introduces concerns that go beyond cost, including the choice of AWS regions (which differ in carbon intensity based on their energy mix) and the design of data lifecycles that avoid storing data longer than necessary.

The Well-Architected Review Process

How Reviews Work in Practice

The Well-Architected Framework isn't just a document - it's also a process. An architecture review, whether conducted informally by a team or formally with an AWS Solutions Architect, works through a structured set of questions organized by pillar. Each question asks about a specific aspect of the workload and prompts the reviewer to document whether best practices are in place, which are not yet implemented, and which have been consciously accepted as risks.

The AWS Well-Architected Tool, available free in the AWS Management Console, automates this process. You create a workload definition, answer the review questions, and receive a prioritized list of high-risk issues (HRIs) and medium-risk issues (MRIs). The tool also provides milestone tracking so you can document architectural decisions over time and measure improvement.

// Example: Using the AWS SDK to programmatically create a workload 
// in the Well-Architected Tool and list its risk summary

import { WellArchitectedClient, CreateWorkloadCommand, GetWorkloadCommand } from "@aws-sdk/client-wellarchitected";

const client = new WellArchitectedClient({ region: "us-east-1" });

async function createWorkloadAndGetRiskSummary(workloadName: string, description: string) {
  // Step 1: Create the workload
  const createResponse = await client.send(new CreateWorkloadCommand({
    WorkloadName: workloadName,
    Description: description,
    Environment: "PRODUCTION",
    ReviewOwner: "platform-team@example.com",
    Lenses: ["wellarchitected"],  // Apply the core WA lens
    AwsRegions: ["us-east-1", "eu-west-1"],
  }));

  const workloadId = createResponse.WorkloadId;
  if (!workloadId) throw new Error("Failed to create workload");

  console.log(`Created workload: ${workloadId}`);

  // Step 2: Retrieve workload to inspect risk summary
  const workloadDetails = await client.send(new GetWorkloadCommand({
    WorkloadId: workloadId,
  }));

  const riskCounts = workloadDetails.Workload?.RiskCounts;
  
  console.log("Risk Summary:");
  console.log(`  High Risk Issues: ${riskCounts?.HIGH ?? 0}`);
  console.log(`  Medium Risk Issues: ${riskCounts?.MEDIUM ?? 0}`);
  console.log(`  Not Applicable: ${riskCounts?.NOT_APPLICABLE ?? 0}`);
  console.log(`  Not Answered: ${riskCounts?.UNANSWERED ?? 0}`);

  return { workloadId, riskCounts };
}

The Improvement Plan Loop

A Well-Architected review is not a one-time event. The most effective teams treat it as an ongoing practice - reviewing annually at minimum, and re-reviewing after significant architectural changes. Each review produces an improvement plan: a prioritized list of remediations ranked by risk severity and estimated implementation effort.

The improvement plan creates a direct connection between architecture quality and engineering backlog. High-risk issues identified in a Well-Architected review should become tracked tickets, assigned to owners, and resolved within a defined timeframe. This is how the framework moves from an assessment activity to a driver of architectural improvement. Without this feedback loop, reviews produce documentation but not change.

Practical Implementation: Applying the Framework

Starting From Scratch vs. Reviewing Existing Systems

The framework can be applied both to greenfield systems during design and to existing systems as a retrospective audit. These are meaningfully different activities. When designing a new system, the framework's design principles serve as architecture constraints - they shape decisions before code is written. When reviewing an existing system, the framework surfaces accumulated technical debt and security risk that may have been invisible.

For new systems, a useful practice is to run a "pre-mortem" Well-Architected review before the first deployment. Work through the key questions in each pillar and document the answers explicitly, even if they're "we don't know yet" or "we've consciously deferred this." This creates a shared understanding of known gaps and prevents the common outcome where architectural shortcuts taken under launch pressure calcify into permanent decisions.

Infrastructure as Code Alignment

One of the most powerful ways to operationalize the Well-Architected Framework is to align it with your IaC practices. When infrastructure is defined as code, architectural best practices can be enforced automatically - through policy-as-code tools, linting, and automated checks in CI/CD pipelines.

# Example: AWS CDK construct that implements several Well-Architected 
# best practices for an S3 bucket (Security + Reliability pillars)

import aws_cdk as cdk
from aws_cdk import (
    aws_s3 as s3,
    aws_kms as kms,
    RemovalPolicy,
    Duration,
)
from constructs import Construct

class WellArchitectedBucket(Construct):
    """
    An S3 bucket construct that implements Well-Architected best practices:
    - Security: Server-side encryption with customer-managed KMS key
    - Security: Public access blocked
    - Security: Versioning enabled for data protection
    - Reliability: Lifecycle rules to manage object transitions
    - Operational Excellence: Access logging enabled
    - Cost Optimization: Intelligent-Tiering for infrequently accessed data
    """

    def __init__(self, scope: Construct, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)

        # Customer-managed KMS key for encryption (Security pillar)
        encryption_key = kms.Key(
            self, "BucketEncryptionKey",
            enable_key_rotation=True,  # Automatic key rotation per security best practices
            removal_policy=RemovalPolicy.RETAIN,
        )

        # Access logging bucket (Operational Excellence pillar)
        access_log_bucket = s3.Bucket(
            self, "AccessLogBucket",
            encryption=s3.BucketEncryption.S3_MANAGED,
            block_public_access=s3.BlockPublicAccess.BLOCK_ALL,
            removal_policy=RemovalPolicy.RETAIN,
        )

        # Primary bucket with WA best practices applied
        self.bucket = s3.Bucket(
            self, "Bucket",
            encryption=s3.BucketEncryption.KMS,
            encryption_key=encryption_key,

            # Security: block all public access
            block_public_access=s3.BlockPublicAccess.BLOCK_ALL,
            
            # Reliability: enable versioning for recovery from accidental deletes
            versioning=True,

            # Operational Excellence: enable server access logging
            server_access_logs_bucket=access_log_bucket,
            server_access_logs_prefix="access-logs/",

            # Security: enforce SSL-only access
            enforce_ssl=True,

            # Cost Optimization: lifecycle rules to reduce storage costs
            lifecycle_rules=[
                s3.LifecycleRule(
                    id="TransitionToIntelligentTiering",
                    transitions=[
                        s3.Transition(
                            storage_class=s3.StorageClass.INTELLIGENT_TIERING,
                            transition_after=Duration.days(30),
                        )
                    ],
                    # Clean up incomplete multipart uploads
                    abort_incomplete_multipart_upload_after=Duration.days(7),
                ),
                s3.LifecycleRule(
                    id="ExpireOldVersions",
                    noncurrent_version_expiration=Duration.days(90),
                )
            ],

            removal_policy=RemovalPolicy.RETAIN,
        )

This pattern - encoding Well-Architected practices into reusable IaC constructs - is particularly valuable in organizations with multiple teams deploying infrastructure. Rather than relying on every team to remember every best practice, you make the best practice the path of least resistance.

Trade-offs and Common Pitfalls

The Completeness Trap

The most common mistake teams make when engaging with the Well-Architected Framework is treating it as a compliance checklist to be completed rather than a thinking tool to be applied. When teams optimize for answering every question "correctly," they miss the framework's actual purpose: surfacing meaningful trade-offs and making them explicit.

A related failure mode is treating every High Risk Issue as equally urgent. Not all HRIs have the same business impact. A security HRI in a payment processing system is categorically more important than a Cost Optimization HRI in a staging environment. Effective use of the framework requires judgment about which risks matter most for your specific workload and context.

Over-Engineering vs. Under-Engineering

The Well-Architected Framework's best practices, applied uncritically, can lead to over-engineered systems. Multi-AZ deployments, cross-region replication, WAF rules, and comprehensive observability instrumentation are all justified for production workloads handling real user traffic - but they may be unnecessary and expensive for internal tools, batch pipelines, or early-stage products.

AWS explicitly acknowledges this tension. The framework asks you to understand the business requirements for each pillar, not to maximize scores uniformly. A workload with a recovery time objective (RTO) of 24 hours has different architecture requirements than one with an RTO of 5 minutes. A well-architected system is calibrated to its actual requirements, not to an abstract maximum quality level.

The "Set and Forget" Anti-Pattern

Architecture reviews that happen once at launch and never again provide minimal long-term value. Cloud architectures drift. Services are deprecated. Security vulnerabilities are discovered. Cost profiles change as usage grows. The Well-Architected Framework is designed as a continuous practice, and teams that treat it as a one-time activity miss the compounding benefits of ongoing architectural hygiene.

Concretely: establish a cadence for re-review. Many mature organizations do a full Well-Architected review annually and a targeted pillar review after each major system change. The goal is to ensure that the architecture review is a live artifact that reflects the current state of the system, not a historical document from deployment day.

Best Practices for Operationalizing the Framework

Assign Pillar Owners

In a team context, consider assigning pillar ownership. The security pillar maps naturally to a security engineering function. The Cost Optimization pillar maps to a FinOps function or a platform engineering team with budget visibility. The Operational Excellence pillar maps to SRE or on-call engineering. Making ownership explicit prevents the "everyone's responsibility is no one's responsibility" dynamic that causes architectural concerns to fall through the cracks.

Pillar owners shouldn't work in isolation - security decisions affect reliability, and cost optimization affects performance. But having a designated owner per pillar means each concern has an advocate in architectural discussions. This is especially important in the early stages of adopting the framework, before it becomes part of a team's natural thinking.

Integrate Reviews into the SDLC

A Well-Architected review is most actionable when it's connected to your software development lifecycle rather than treated as a separate ceremony. Consider running a lightweight architecture review at the start of major projects (what AWS calls the "pre-launch" review) and a more comprehensive review before production launches. The AWS Well-Architected Partner Program provides trained reviewers who can conduct formal reviews for organizations that want external perspective.

The key integration point is the improvement plan. Findings from a Well-Architected review should feed directly into your team's backlog management process. If your team uses JIRA, GitHub Issues, or Linear, architecture review findings should become tracked issues with priority scores, owners, and due dates - not a separate document that lives outside your normal workflow.

Use Lenses for Domain-Specific Guidance

Beyond the core framework, AWS publishes additional "lenses" that extend the Well-Architected Framework to specific domains: the Serverless Lens, the Machine Learning Lens, the SaaS Lens, the IoT Lens, and more. Lenses add domain-specific best practice questions that the core framework doesn't cover in depth.

If your workload fits one of these domains, applying the relevant lens alongside the core framework significantly improves the specificity of the review. The Serverless Lens, for example, addresses Lambda function design, event source mapping, stateless function patterns, and cold start mitigation - topics the core framework covers only at a high level. Community-contributed lenses are also available, enabling teams in specialized domains to codify their own architecture best practices in the same format.

Analogies and Mental Models

The Framework as a Building Inspection

Think of the Well-Architected Framework the way a structural engineer thinks about building inspection. When inspecting a building, an engineer doesn't expect perfection - they systematically check each structural system (foundation, framing, electrical, plumbing, fire suppression) against known standards, document deviations, and classify them by severity. The goal isn't to find zero issues; it's to ensure that known risks are understood and that critical issues are addressed before they cause harm.

The Well-Architected Framework does the same thing for cloud architectures. It systematically checks each quality dimension (security, reliability, cost, etc.) against established best practices, classifies issues by severity, and produces an improvement plan. Just as a building inspector doesn't judge the entire building by whether one outlet is wired correctly, you shouldn't judge an architecture by whether it answers every framework question correctly. The inspection surfaces the conversation.

The Pillars as Competing Priorities

Another useful mental model is to think of the six pillars as dials on a mixing board, each of which can be turned up or down. Turning up Reliability typically turns down Cost Optimization - multi-AZ deployments, redundant capacity, and disaster recovery infrastructure all cost money. Turning up Performance Efficiency may turn down Sustainability if it requires running more compute to reduce latency. Turning up Security may create Operational Excellence friction if it requires additional approval gates.

The framework doesn't prescribe a single "correct" mix. It asks you to set each dial intentionally, based on the actual requirements of your workload and the risk tolerance of your organization. The goal is a conscious mix, not a maximum score on every dimension.

Key Takeaways

Five practical steps you can take immediately:

  1. Run a Well-Architected Tool review on one production workload this week. The tool is free, built into the AWS Console, and the review process itself surfaces architectural conversations that are valuable independent of the findings. Start with your most business-critical workload.

  2. Enforce at least three Well-Architected best practices in code. Pick three common patterns - encrypted S3 buckets, IMDSv2 on EC2 instances, VPC flow logs enabled - and implement them as IaC constructs or Terraform modules. Make best practices the default, not the exception.

  3. Establish pillar ownership on your team. Assign a primary owner to each pillar and make it part of how your team tracks architectural quality. This creates accountability without requiring bureaucracy.

  4. Connect your improvement plan to your engineering backlog. If Well-Architected findings aren't tracked alongside feature work, they won't get done. Create tickets, assign them priorities, and include them in sprint planning.

  5. Read one AWS lens relevant to your domain. If you run serverless workloads, read the Serverless Lens. If you build SaaS products, read the SaaS Lens. Domain-specific guidance is where the framework's practical value density is highest.

The 80/20 Insight

If you can only do two things, do these: lock down IAM with least-privilege policies, and enable multi-AZ for your critical data stores. IAM misconfigurations are the root cause of the majority of cloud security incidents. Multi-AZ coverage is the single highest-leverage reliability improvement available in AWS with minimal architectural complexity. Everything else in the framework matters, but these two practices prevent the failure modes most likely to cause an outage or breach.

The deeper 80/20 insight is this: the Well-Architected Framework's value is not in achieving a perfect review score. It's in making your team's architectural decision-making explicit, shared, and revisable. A team that talks openly about the trade-offs between cost and reliability, reviews those decisions periodically, and updates them as circumstances change will outperform a team that applies every best practice mechanically but never thinks about why.

Conclusion

The AWS Well-Architected Framework is, at its core, a structured way of asking hard questions about cloud systems before those systems fail in production. Its six pillars - Operational Excellence, Security, Reliability, Performance Efficiency, Cost Optimization, and Sustainability - represent the dimensions along which cloud architectures succeed or fail, and the framework provides a comprehensive set of questions and best practices for evaluating each dimension.

What makes the framework genuinely useful is not the breadth of its coverage, but the discipline it imposes on architectural thinking. Cloud infrastructure invites improvisation. The Well-Architected Framework provides a counterbalance: a systematic, repeatable way to ensure that improvisation doesn't accumulate into structural risk. Used well - as an ongoing practice rather than a one-time audit, integrated into the SDLC rather than bolted on afterward - it is one of the highest-leverage investments a cloud engineering team can make.

Architecture work is fundamentally about managing trade-offs over time. The Well-Architected Framework won't make those trade-offs disappear, but it will make them visible, explicit, and manageable. For engineers serious about building systems that are secure, reliable, efficient, and sustainable, that's the right place to start.

References

  1. AWS Well-Architected Framework - Official AWS documentation covering all six pillars, design principles, and best practices. https://docs.aws.amazon.com/wellarchitected/latest/framework/welcome.html

  2. AWS Well-Architected Tool - AWS Management Console service for running workload reviews.
    https://aws.amazon.com/well-architected-tool/

  3. AWS Well-Architected Labs - Hands-on labs for implementing Well-Architected best practices.
    https://www.wellarchitectedlabs.com/

  4. Serverless Lens Whitepaper - AWS extended lens for serverless workload architecture review.
    https://docs.aws.amazon.com/wellarchitected/latest/serverless-applications-lens/welcome.html

  5. SaaS Lens Whitepaper - AWS extended lens for Software-as-a-Service architecture patterns.
    https://docs.aws.amazon.com/wellarchitected/latest/saas-lens/saas-lens.html

  6. AWS Architecture Center - Reference architectures, whitepapers, and best practice guides.
    https://aws.amazon.com/architecture/

  7. AWS CDK Documentation - Infrastructure as Code library used in examples throughout this article.
    https://docs.aws.amazon.com/cdk/v2/guide/home.html

  8. AWS SDK for JavaScript (v3) - Used in the Well-Architected Tool programmatic example.
    https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/wellarchitected/

  9. AWS Customer Carbon Footprint Tool - For measuring sustainability impact of AWS workloads.
    https://aws.amazon.com/aws-cost-management/aws-customer-carbon-footprint-tool/

  10. AWS Compute Optimizer - Right-sizing recommendations for EC2, Lambda, ECS, and more.
    https://aws.amazon.com/compute-optimizer/

  11. AWS Savings Plans - Flexible pricing model for committed compute usage.
    https://aws.amazon.com/savingsplans/

  12. Haff, G. (2022). Cloud Native Infrastructure Patterns. O'Reilly Media. - A complementary resource for cloud-native architecture patterns alongside the Well-Architected Framework.