Rolling deploy — replace instances incrementally. Kubernetes default. Fast, but both versions run simultaneously — requires backwards-compatible API changes.
Blue/green — run two identical environments; switch traffic at the load balancer. Instant cutover; instant rollback; doubles infrastructure cost during deploy.
Canary — route a small % of traffic (1%, 5%) to the new version first. Monitor error rates, latency, business metrics. Expand gradually. Best for high-risk changes.
Feature flags — deploy code dark; enable feature separately. Decouples deployment from release. Requires flag management overhead.
Database migrations — always use expand-contract pattern: add new column (expand), migrate data, update code to use new column, remove old column (contract). Never change column type or remove columns in a single deploy.
Canary + feature flags = maximum control. Most orgs should combine both for high-risk releases.