Friday deploy: when to avoid it and when it's worth it
TL;DR - Fear of Friday deploy makes sense without observability and rollback. With both, what matters is the size of the change and avoiding DB migrations.
Friday afternoon, pipeline green, deploy goes out. On every team I’ve been on someone would say: “not today, Monday”. I get it. I’ve also seen weekends turn into bug hunts. The difference between “Friday deploy is Russian roulette” and “Friday deploy is calculated risk” is two things: observability and rollback.
Without them, the “never on Friday” rule makes sense. You can spend the weekend in the dark, not knowing what broke or how to roll back. With metrics and logs I trust, and a clear, tested rollback, Friday is just another day to decide with judgment.
When I deploy on Friday
- Observability in place: I know right away if something broke, where and why.
- Rollback documented and already used in production.
- Small change or controlled impact.
- No DB migration in that deploy.
When I leave it for Monday
- Large change or first time a feature goes to production.
- Any deploy that includes a DB migration. A migration that fails on Saturday is a different level of pain.
- Doubt about impact size: when in doubt, I postpone.
The diagram below sums up the logic I use:
flowchart TB
Deploy[Friday deploy?] --> Obs{Observability and rollback ok?}
Obs --> Nao[No] --> Evitar[Avoid]
Obs --> Sim[Yes] --> Migracao{DB migration?}
Migracao --> Sim2[Yes] --> Evitar
Migracao --> Nao2[No] --> Impacto{Size / impact under control?}
Impacto --> Sim3[Yes] --> Vale[Worth it]
Impacto --> Nao3[No] --> Evitar