Incremental, timed rollout
Description
To reduce operational risk when rolling out new code, a best practice is to slowly, incrementally roll out code changes to a fleet, pausing in between certain breakpoints, and optionally allowing for metrics to pause or abort a rollout.
Proposal
- Pick a good rollout standard such as 1%, 5%, 10%, 20%, 50%, 100%
- Roll out to each group amount, then wait for specific time, then continue
- Ability for manual abort of rollout
- Future: Ability for monitoring metrics to automatically abort rollout
Links / references
- Depends on #21413 (closed)
- Alternate: Canary deploys: https://gitlab.com/gitlab-org/gitlab-ce/issues/26961
- Tweet: https://twitter.com/officesunshine/status/821787299084173320