Adding a new column sounds simple, but on a high-traffic system it can be risky. The wrong approach locks tables, slows writes, or crashes deployments. The right approach adds the column without interrupting service or corrupting data.
First, define the exact purpose of the new column. Make the name clear, keep it consistent with your naming conventions, and choose the correct data type from the start. Changing types later is expensive.
Second, if the database supports it, add the column with a default that does not force a full table rewrite. For example, in PostgreSQL, adding a nullable column is fast. Setting a default on an existing table often rewrites data, which can be slow on large datasets. In MySQL, online DDL options can accomplish similar results.
Third, deploy in stages. Use migrations that add the new column in one release, update application code in the next. This reduces operational risk. Backfill the column asynchronously to avoid locking, using batch jobs with limits to keep load steady.