It sounds simple, but in production, nothing is simple. Adding a new column touches real data, migrations, indexes, and live queries. Done wrong, it can slow your database, break services, or even lock the table. Done right, it’s a fast, atomic change that rolls out without downtime.
A new column starts in the migration file. Define it in your ORM or SQL script with clear defaults. For large datasets, set NULL initially or use DEFAULT with lightweight values to avoid costly table rewrites. Consider whether it needs to be indexed now or later. Index creation can block writes, so measure the impact before pushing it.
Every new column changes the contract between your data and your application layer. Update models, serializers, and API responses in sync with the migration. Use feature flags to control rollout—ship the schema first, then enable usage. This avoids race conditions and unexpected nulls in production reads.