Blue-green deployment keeps two full, identical production environments — one (blue) live and serving traffic, one (green) idle. A new release deploys to the idle environment, gets tested against real infrastructure with no user traffic, and once verified, traffic is switched to it atomically — instantly and completely, rather than gradually like a canary — with the old environment kept warm as an instant rollback target.
Worked example: run two identical production environments — ‘blue’ (live) and ‘green’ (new) — and flip the router from one to the other in a single switch, giving instant rollback by flipping back. Gotcha: it doubles infra cost while both are up, and the hard part is stateful data — schema migrations and in-flight sessions must be compatible with BOTH versions during cutover, or the ‘instant rollback’ is not actually safe.