Search for Well Architected Advice
< All Topics
Print

Make frequent, small, reversible changes

Making Frequent, Small, and Reversible Changes
Implementing frequent, small, and reversible changes helps reduce the scope and impact of changes in your workload. By breaking changes into smaller pieces, you can more easily identify and address issues, making troubleshooting and remediation more effective. When integrated with change management, configuration management, and build and delivery systems, these practices support faster rollbacks and improve overall reliability.

Reduce Scope with Small Changes

Break changes into small, manageable pieces to minimize the scope of each individual change. Small changes are less complex, easier to understand, and involve fewer components. This reduces the likelihood of unintended consequences and makes it easier to identify which change may have caused an issue if a problem arises.

Increase Deployment Frequency

Deploy changes frequently to continuously iterate and improve the workload. Frequent deployments mean that changes are smaller and more focused, which helps identify issues early in the development lifecycle. By deploying often, teams also become more comfortable with the process, making it smoother and more reliable over time.

Ensure Changes Are Reversible

Make sure that each change is reversible, allowing teams to quickly roll back changes if issues are detected. Reversible changes help minimize the impact of any defects, enabling rapid restoration of stability in the production environment. This approach reduces downtime and improves user experience by allowing for a quick response to unexpected problems.

Integrate with Change Management and CI/CD Systems

Use change management, configuration management, and CI/CD systems to implement and track frequent changes. Automated systems help validate changes, track configuration updates, and manage the build and deployment process. By integrating frequent changes into an automated pipeline, teams can maintain consistency, reduce manual errors, and gain confidence in the changes they deploy.

Improve Troubleshooting and Remediation

Frequent, small changes make troubleshooting easier because they reduce the number of variables that could be causing an issue. With smaller changes, teams can quickly isolate and remediate the root cause of a problem. If an issue cannot be easily fixed, rolling back the small change ensures that the workload remains stable while the issue is investigated further.

Supporting Questions

  • How are changes broken down into smaller, manageable pieces?
  • How does deploying frequent changes improve the reliability of the workload?
  • What systems are in place to ensure that changes are reversible and easy to roll back?

Roles and Responsibilities

Developer
Responsibilities:

  • Implement changes in small, manageable increments and ensure that changes are reversible.
  • Validate changes in a testing environment before they are deployed to production.

DevOps Engineer
Responsibilities:

  • Integrate frequent, small changes into the CI/CD pipeline to automate testing, validation, and deployment.
  • Use change management systems to track changes and ensure that they can be rolled back if necessary.

Change Manager
Responsibilities:

  • Review and approve small changes as part of the change management process.
  • Ensure that changes are tracked and that rollbacks are available if issues arise during deployment.

Artifacts

  • Change Log: A record of all changes made, including the status of each change, any incidents encountered, and details of any rollbacks performed.
  • Rollback Procedure Document: A document that outlines the steps required to revert changes in the event of an issue.
  • Change Management Policy: A policy defining best practices for making small, frequent, and reversible changes, including guidelines for approvals and deployment.

Relevant AWS Tools

Change Management and Tracking Tools

  • AWS Systems Manager Change Manager: Automates the process of tracking and approving changes, ensuring that changes are reversible and manageable.
  • AWS Config: Tracks configuration changes across AWS resources, providing insight into what changes were made and enabling quick rollbacks if needed.

CI/CD and Automation Tools

  • AWS CodePipeline: Automates the build, test, and deployment process, allowing for frequent and consistent deployment of small changes.
  • AWS CodeDeploy: Deploys changes to applications in a controlled manner, ensuring that deployments can be easily rolled back if issues are detected.

Monitoring and Troubleshooting Tools

  • Amazon CloudWatch: Monitors deployments to track the impact of small changes and quickly detect any issues that may arise.
  • AWS X-Ray: Helps trace requests through applications, making it easier to troubleshoot issues that occur after a small change is deployed.
Table of Contents