Journal
Boring deploys are a feature
Every project we take on gets the same deployment story on day one, before any feature work. It is deliberately dull.
A single script builds an artefact, copies it next to the running version, runs the health check against the new copy and only then flips a symlink. If the check fails, nothing changes. If something goes wrong later, flipping the symlink back is the rollback.
./deploy.sh build ./deploy.sh check # hits /healthz on the new release ./deploy.sh switch # atomic symlink swap, then reload
None of this is new. The point is that it is the same everywhere, so nobody has to remember how a particular client's server works at two in the morning.
Clients rarely ask for this. They always notice when it is missing.