Making releases routine.
WHAT A GOOD PROCESS IS
Repeatable Automated, or precisely documented Reversible Verified afterwards
WHAT THE STEPS USUALLY ARE
Take a backup Put the application in maintenance mode, where needed Deploy the code Install dependencies Apply database changes Rebuild caches Restart background workers Bring it back Verify
WHY THAT ORDER
Each step depends on the previous one.
WHAT TO AUTOMATE
All of it, ideally as one command.
WHAT TO DOCUMENT
The steps, so the automation can be reproduced or performed manually.
WHAT TO DECIDE BEFOREHAND
Who may deploy When deployments happen Who is told
WHAT TO AVOID
Deploying on a Friday afternoon Deploying when nobody is available afterwards Deploying several unrelated changes together
WHAT TO MEASURE
How long a deployment takes How often one causes a problem