Adding a new column should be simple. In practice, it can break deploys, cause downtime, or corrupt data if handled carelessly. Whether you use PostgreSQL, MySQL, or a cloud-native database, a schema change is never just a schema change.
A new column in SQL alters the contract between your database and every consumer of that data. Your application code, migrations, serialization logic, and analytics pipelines all have to agree on its existence, type, and nullability. The stakes rise when your dataset is large or when uptime is critical.
To add a new column without downtime, the safest approach is to design for backward compatibility. First, add the column with a default or nullable value. Deploy this change by itself. Then, in a separate deploy, start writing data to it. Only after all reads and writes are stable should you enforce constraints or make it NOT NULL.