Adding a new column should be simple. In practice, it can break a deployment if you get the sequence wrong. Schema changes affect production performance, API contracts, and data integrity. The wrong type, nullability, or default value can trigger failures that cascade through the stack.
A new column impacts three layers at once: the database, the application code, and any integrations that consume the data. The safest approach starts with backward-compatible changes. Add the column without dropping or altering existing ones. Give it a default or allow null values so existing writes pass validation. Deploy this migration first and confirm it runs clean under live load.
Next, update the application code to read from and write to the new column. Deploy the code after the schema is ready. Test the data flow in staging with production-like traffic before enabling the feature flag or endpoint that depends on the column. Once your systems are writing to it, run a backfill if you need historic data available there.