The goal of zero-downtime deploys is simple: update your production application without any request receiving an error response. In practice there are three distinct strategies, each with its own complexity budget.
Rolling updates replace instances one by one, keeping the cluster partially available throughout. They are the lowest-overhead option and work well when your new version is backward-compatible with the old one — i.e., you have not changed database schemas or API contracts in breaking ways.
Blue-green deploys maintain two identical environments. Traffic flips atomically from blue to green at the DNS or load-balancer level. Rollback is instant — just flip back. The cost is double the infrastructure during the transition window.
Canary releases send a small percentage of traffic (say 5%) to the new version, monitor error rates and latency, then gradually shift more traffic if metrics stay healthy. This is the highest-confidence strategy for risky changes, but requires observability tooling to be effective.
Barefoot supports all three out of the box. Configure your strategy in `barefoot.config.ts`. Canary releases automatically pause and alert if p99 latency increases more than 20% or error rate crosses 0.5%.