REL 8: How do you implement change?

Controlled changes are necessary to deploy new functionality, and to ensure that the workloads and the operating environment are running known software and can be patched or replaced in a predictable manner. If these changes are uncontrolled, then it makes it difficult to predict the effect of these changes, or to address issues that arise because of them.

Resources

AWS Summit 2019: CI/CD on AWS
What Is AWS CodePipeline?
What Is CodeDeploy?
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
CanaryRelease
AWS Marketplace: products that can be used to automate your deployments
APN Partner: partners that can help you create automated deployment solutions

Best Practices:

Improvement Plan

Use runbooks for standard activities such as deployment

  • Enable consistent and prompt responses to well understood events by documenting procedures in runbooks.
    AWS Well-Architected Framework: Concepts: Runbook
  • Use the principle of infrastructure as code to define your infrastructure: By using AWS CloudFormation (or a trusted third party) to define your infrastructure, you can use version control software to version and track changes.
  • Integrate functional testing as part of your deployment

  • Integrate functional testing as part of your deployment: Functional tests are run as part of automated deployment. If success criteria are not met, the pipeline is halted or rolled back.
  • Integrate resiliency testing as part of your deployment

  • Integrate resiliency testing as part of your deployment: Use Chaos Engineering, the discipline of experimenting on a workload in order to build confidence in the workload’s capability to withstand turbulent conditions in production.
  • Deploy using immutable infrastructure

  • Deploy using immutable infrastructure: Deploy using an immutable infrastructure approach such as Blue/Green or Canary Deployment
    Overview of a Blue/Green Deployment
    Deploying Serverless Applications Gradually
    CanaryRelease
  • Deploy changes with automation

  • Automate your deployment pipeline: Deployment pipelines allow you to invoke automated testing and detection of anomalies, and either halt the pipeline at a certain step before production deployment, or automatically roll back a change.
    The Amazon Builders' Library: Ensuring rollback safety during deployments
    The Amazon Builders' Library: Going faster with continuous delivery