Adding a new column to a production database is simple in theory, but the real work hides in the details—migrations, backfills, deployment order, and performance impacts. Done wrong, it blocks deploys, locks tables, and risks downtime.
First, define the new column with the correct data type and nullability. Avoid changing these later; it will cost more once data is in place. In relational databases like PostgreSQL or MySQL, adding a nullable column without a default is usually safe and fast. Adding one with a default can trigger a full table rewrite.
Second, plan your schema migration. Use tools like Liquibase, Flyway, or native migration frameworks. Keep migrations small and reversible. In zero-downtime deploys, add the new column in one release, backfill data asynchronously, then switch application logic in the next release.