Release and Deployment Patterns
This domain tests pattern selection and, more importantly, whether you notice the compatibility constraints that decide if a pattern works. Expect a scenario asking which rollout can be reversed safely.
Patterns and when they fit
- Recreate: stop then start. Downtime, simple, acceptable for internal tools.
- Rolling: replace instances in batches. No extra fleet, but two versions serve traffic simultaneously.
- Blue/green: two identical fleets, switch traffic at the router. Fast rollback to blue, roughly double cost during the switch, and both versions may touch one database.
- Canary: send a small share of traffic to the new version, compare SLOs, then widen.
- Dark launch and toggles: deploy inactive code and enable per cohort, decoupling deployment from release.
- Ring/phased rollout: internal users, then early adopters, then everyone.
The compatibility rule
Rolling, canary and blue/green all run two versions at once. Both must work against the same datastore and API: expand/contract schema changes, additive API fields, no assumption that a single version owns the data.
Automated rollback
Trigger rollback from SLO analysis (error rate, p95 latency, saturation) rather than from a human noticing a dashboard. Prefer roll forward when a data change is already irreversible.
Worked example
A canary takes 5% of traffic for 30 minutes. Baseline error rate is 0.2%; the canary shows 1.4% and p95 latency up 300 ms. Automated analysis fails the stage and shifts traffic back to the stable version within a minute. The fix then ships behind a toggle, so the code is deployed but inactive while the canary stays small. Note the canary window and sample size must be large enough to distinguish a real regression from noise.
Traps that cost marks
- Blue/green without externalised sessions or a schema both versions can use.
- A rollback plan that requires reversing a destructive migration.
- Toggles with no owner or removal date, accumulating permanent branching debt.
- Canary windows too short or too small to detect anything.
- Treating blue/green as zero-risk when the shared database is the real coupling.