Zero-downtime database migrations: the expand-and-contract pattern explained | TechTrio Blog