Adding a new column sounds simple. It rarely is. The schema must shift without breaking existing code. Queries must handle the new field. Indexes must be considered. Default values must be defined or handled in application logic. Data types must be chosen for both performance and correctness.
In production, a new column means change propagation across services, APIs, and caches. The ORM needs mapping updates. Background jobs might need awareness of the field. Validation rules must be adapted. You must test for edge cases before they turn into real-world failures.
Migrating with zero downtime requires careful planning. Use feature flags to gate the new column until it is safe. Run dual writes to old and new fields before cutting over. Include backfill scripts that can be retried safely. Monitor query performance post-deployment to avoid silent slowdowns.