Deploying new code which relies on a non-backward-compatible database changes - how do you update the application and the database without any downtime?<p>What tools and processes do you use for this? Are there any established best practices?<p>For more context, I'm using a managed SQL database and the application runs on Kubernetes.
Generally if you take the always append columns never drop or rename existing ones you’ll be okay. (Then once everyone moves over to the new stuff you can drop or otherwise cleanup the table).<p>Make alter table statements, depending on the engine some can be non-locking/blocking.<p>Deploy code.<p>Enjoy.
Normally all breaking changes can be broken up into 2.<p>First add the additions to the db, then the new version of the software can work with the db.<p>Then once all software is updated, remove the old fields.