Search for Well Architected Advice
< All Topics
Print

Deploy using immutable infrastructure

Controlled changes are essential for the deployment of new functionality and maintaining consistent operational environments. Immutable infrastructure allows for predictable management of workloads by ensuring that changes don’t affect existing systems, reducing the risk of unforeseen issues and enhancing overall reliability.

Best Practices

  • Containerization: Utilize container technologies to encapsulate application environments, which can be easily managed and deployed independently, resulting in lower risk during updates.
  • Version Control: Maintain strict version control over infrastructure as code (IaC) to enable rollback capabilities, audit changes, and ensure compliance throughout the deployment process.
  • Blue-Green Deployments: Implement blue-green deployment strategies to minimize downtime and reduce the risk of failures by switching traffic between two identical environments seamlessly.

Supporting Questions

  • What measures do you have in place to ensure new infrastructure is tested before deployment?

Roles and Responsibilities

  • DevOps Engineer: Responsible for automating deployment processes and managing configurations to support immutable infrastructure principles.
  • QA Engineer: Ensures comprehensive testing is conducted on the new infrastructure before it goes live to ensure functionality and reliability.

Artifacts

  • Infrastructure as Code (IaC) Scripts: Scripts used to define and provision infrastructure consistently and predictably across different environments.
  • Deployment Automation Tools: Tools such as Terraform or AWS CloudFormation that facilitate the creation and management of immutable infrastructure.

Cloud Services

AWS

  • AWS CloudFormation: Allows developers to model and set up their Amazon Web Services resources so that they can spend less time managing those resources and more time focusing on their applications.
  • Amazon ECS/EKS: Enables deploying containerized applications with support for immutable infrastructure principles, ensuring consistent environments and easier rollbacks.

Question: How do you implement change?
Pillar: Reliability (Code: REL)

Table of Contents