Fictional example. A case-management application runs on six instances. The team wants to replace a status column with state, change its allowed values and immediately remove the old field. The rollout is gradual, so old and new application versions run together for several minutes.
The new version reads only state; the old version reads only status. Backfilling several million rows will take longer than the code rollout. The team plans to roll back the application if needed, but has not explained what happens to the database change or to records written during the transition.
How do you split this change into safe stages? When may writes to the old field stop, when may the field be removed, and how do you test rollback?
Guiding questions
- Which code version must work with which schema state?
- How will you handle writes that happen while historical rows are being backfilled?
- Will rolling back code work after an irreversible column removal?
- What evidence permits the move from expand to migrate and contract?