While you’re deploying, production is going to be in a half-upgraded state (or maybe half rolled-back!), so it’s pretty important to be able to test that.
Release is a privileged tool pushing to Git. Deployment is incremental across a small but growing number of containers running a microservice, so both old and new code might be running concurrently for up to a couple of hours. Percentage experiments are pretty common, which means both old and new paths actually have to work in the same commit.
* Breaking changes can be done at once. Very helpful for runtime deps.
* No chance that a repo is out of date.
* Upgrades are atomic (may be hard to test a system in a half state).