The pattern is well known and still routinely done wrong, almost always by collapsing two phases into a single deploy.
Expand: add the new column or table, nullable, with no reads against it. Backfill: populate in batches, watching replication lag. Migrate reads: dual-read with the old path as fallback, then flip. Contract: drop the old path once the new one has been clean for a full business cycle.
The step teams skip is the gap between migrating reads and contracting. Dropping the old column in the same release as the read switch turns a rollback into a data-loss event.
Slower is faster here. Four deploys over two weeks beats one deploy and an incident review.