Adding a new column is simple in theory: ALTER TABLE. But in production, on a table with millions of rows, that command can lock writes and stall your app. This is where most outages are born.
Before running a schema migration, measure the size of the target table. Check indexes. Many databases rewrite entire rows when adding a column with a default value. This burns CPU, bloats I/O, and blocks requests.
Use nullable columns without defaults to avoid full-table rewrites. Set defaults in application code until the column is populated for all rows. For larger datasets, consider an online schema change tool such as pt-online-schema-change or gh-ost. These tools create shadow tables and copy data in small chunks, letting you add new columns without downtime.