Adding a new column sounds simple. In practice, it can break production if you move without a plan. Schema updates shift the shape of your data. They touch reads, writes, indexes, and caches. They change contracts between services.
The safe path starts with the database. Know your engine’s ALTER TABLE behavior. Check if the operation is blocking. For large tables, add columns with defaults deferred to an application-level migration, or use online DDL tools.
Then move to the application layer. Define the column, and make deploys in small steps. First, introduce the column in the schema. Next, write to it silently. Finally, read from it after all data is backfilled and verified. Keep old code paths until the new column is stable under load.