It sounds simple. It rarely is. A new column changes the shape of your data. It impacts queries, indexes, storage, and downstream code. Every data store treats it differently, and every migration carries risk.
The first step is definition. Name it. Set its data type. Decide if it allows NULLs. These choices must fit your schema and avoid breaking existing operations. Default values need precise thought — they can cause full-table rewrites if mishandled.
Next comes execution. In SQL, ALTER TABLE is the direct route. In PostgreSQL, adding a column without a default is fast, but adding one with a default can touch every row. In MySQL, behavior changes by version. In NoSQL systems like MongoDB, a new field simply appears as documents update, but schema validation rules must be updated.
Testing is non-negotiable. Migrations should run in staging environments with representative data volume. Measure the execution time. Check for locks. Monitor replication lag. Any delay in high-throughput systems can cascade into service degradation.