Adding a new column sounds simple. It can break production if done without care. The right approach keeps data consistent, avoids downtime, and makes migrations safe.
First, decide if the new column is nullable or has a default. Adding a NOT NULL column without a default will fail if rows already exist. Set a default value in the schema change, or allow NULL and backfill later.
Second, consider the database engine. PostgreSQL can add a nullable column instantly. Adding a column with a default writes the default to every row, which can lock the table. Use ADD COLUMN ... DEFAULT ... carefully, or backfill in batches with an update script.
Third, update application code to handle the column before it stores or queries data. Release in two stages: deploy the schema change, then deploy the code that uses it. This avoids undefined column errors and race conditions.