Database changes

Migrations need exit ramps

A migration plan is not complete until you know how to pause, resume, and recover when production is less tidy than staging.

~5 minCoding
scroll
01 · the shape

The schema is only half the change

Real migrations touch code, data, jobs, queries, dashboards, and rollback assumptions. The risky part is often the period where old and new shapes both exist.

db · expand contract

The useful signal is usually already there.

change looks calm

A tiny patch rarely touches only one thing. Push it and watch the review surface appear.

02 · the move

Expand, migrate, contract

Add the new shape first, write both paths, backfill carefully, switch reads, then remove the old shape after you have evidence.

migration.sql

The safest migration is usually more than one deploy.

03 · the check

Watch the batch job

Backfills need progress logs, retry behavior, rate limits, and a way to stop. A migration that cannot be paused is a deploy with a fuse.

change confidence lab
guessy
safe0
fragile: this change still depends on hope and a lucky deploy

Flip the switches and watch the story turn into a tiny operating model.

0phases: expand, dual write, backfill, contract
0pause switch for long-running jobs
0giant unbounded production updates
04 · the takeaway

Data changes are product changes

Users do not care that the migration was elegant. They care that the system kept working while the floor moved.

source trail