Adding a new column sounds simple. In production, under load, it is not. Schema evolution can lock tables, stall writes, and cause timeouts across dependent services. The goal is to ship the schema change without breaking the application or losing data.
The first step is to define the new column in a way that is backward-compatible. Avoid adding a NOT NULL column with no default. Existing inserts will fail if they cannot supply a value. Use a nullable column or a safe default.
For large tables, run the ALTER TABLE command in a way that avoids full table locking. Many databases now support online DDL. MySQL has ALGORITHM=INPLACE and PostgreSQL supports certain column additions without table rewrites. Test these commands in a staging environment with production-like load.
If you must backfill the new column, do not run a single massive update. Process rows in batches. Each batch should commit quickly to avoid replication lag and transaction bloat.