Zero-Downtime Migrations: Expand and Contract Explained

How to ship schema changes with zero downtime using the expand and contract pattern. A practical walk-through of the three phases with real code.