The deployment froze. A schema migration was stuck because a new column wasn’t handled right. You know the cost of downtime. You also know it’s avoidable.
Adding a new column to a production database sounds simple. It rarely is. Schema changes touch application code, queries, indexes, and data integrity. A single misstep can lock tables, block writes, or cause silent data corruption.
The safest way to add a new column is to treat it as a staged rollout. First, alter the schema in a non-blocking way. In PostgreSQL and MySQL, adding a nullable column without a default is often instant. Any default or NOT NULL constraint that forces a table rewrite should be applied in a later step after the application is ready for it.
Next, deploy code that can read from the new column without depending on its presence in every environment. If backfilling is required, run it in controlled batches to limit load. Only when the data migration is complete should you enforce additional constraints.