The migration broke at 02:14. Logs showed a silent failure. The cause was a missing New Column in the production database.
Adding a new column sounds simple. It is not. Done wrong, it creates downtime, data loss, or broken features. Done right, it is invisible and safe. Every deployment should treat schema changes as first-class events.
A New Column requires three steps. First, create it with safe defaults. Never lock the table. Avoid destructive operations in high-traffic systems. Second, backfill data in small batches. Monitor performance. Roll forward on success; roll back instantly if needed. Third, switch application logic to read and write from the new field only after verifying data integrity.
Feature flags help control exposure. Deploy the column before the feature uses it. This reduces risk. Schema changes and application code should travel together but activate separately.