A “New Column” migration seems simple. It isn’t. Add it wrong and you risk locks, failed queries, or cascading errors in production. Get it right, and the database evolves without a flicker to the end user.
The first step is defining the column with exact types and constraints. Use ALTER TABLE ... ADD COLUMN in SQL, but remember this command can trigger table rewrites depending on the database engine. In PostgreSQL, adding a nullable column with no default is fast. Adding a column with a default value locks the table. Plan for it.
Next, consider indexing. Never create an index for the new column during peak traffic. Instead, deploy the column first, backfill data asynchronously, then build the index in a controlled window. This reduces locking and load.