The database table was ready, but the feature was blocked by one missing field: a new column. You could add it in a migration. You could backfill it. You could deploy it. But you needed to do all three without downtime, without data loss, and without tripping over your own schema changes.
A new column is simple to describe and easy to misuse. At scale, it can break production if done carelessly. The wrong type, default value, or nullability constraint can lock a table and block writes. That same mistake can force rollbacks that take hours. The problem is not just creating new columns; it’s creating them safely.
The first step is to define the exact schema change. Use ALTER TABLE ... ADD COLUMN only when your database engine supports concurrent operations or online DDL. For Postgres, add the column as nullable first. For MySQL, use tools like gh-ost or pt-online-schema-change. Avoid defaults that require rewriting existing rows in place.