Yesterday I ran a Continuous Deployment workshop in production, namely Continuous Deployment of a
database change. Sounds advanced?
Actually it's easy, just counter intuitive...
It can be really scary to roll out this big feature because it includes a database change. But by splitting it into 3 to 5 chunks it's a lot less scary and can be done with sometimes shorter downtime. Here are the chunks:
1st deploy: Add the column/table to the database
2nd deploy: fill the new column with values. Check
3rd deploy: Rerun migration script while app is down. New code writing to the new column (but not reading).
4th deploy: New code or feature flip, to only use the new column both for reads and writes
5th deploy: remove old column and old code. (Possibly days later)