Exciting deployments are bad deployments. An exciting deployment means something went wrong. The goal is deployments so routine they are not worth remarking on.
The branching strategy that achieves this: main is always deployable. Every feature branch is short-lived (under 3 days in most cases). Merges to main trigger the CI pipeline automatically. The pipeline must pass before merge is permitted. Deployments to production happen from main on a regular cadence, not as special events.
The discipline that makes this work: feature flags for changes that are not ready for all users but are merged to main for deployment safety. Database migrations that are backwards-compatible with the previous version of the code. Rollback procedures that are tested before they are needed.
The SellTrove team deploys to production multiple times per week. No deployment requires a war room. No deployment requires a maintenance window. This is not luck — it is the result of the workflow being designed to make this possible.
— Dick Bassey | DevDick | 2023