A new column sounds small. It is not. In a live database, every schema change carries risk—locks, downtime, unexpected behavior in dependent services. The goal is to add it with zero disruption, full transparency, and no rollback nightmares.
First, define the new column in your migration files with explicit type, defaults, and nullability. Avoid sweeping changes that rewrite large datasets at once. For massive tables, use additive changes and backfill in controlled batches. Run the migration in a transaction only if the engine supports it without table locks.
Second, update the application code to handle the new column gracefully. Read and write paths must tolerate the column being absent in earlier deployments. Roll out the code that writes to the new column after the schema exists, not before. This avoids write failures during deployment sequencing.