Q: Your CI/CD pipeline deploys Application v2 and automatically runs Flyway to apply Database Migration V2. Ten minutes later, a critical bug is found. You swiftly click "Rollback" to Application v1. The pods securely spin up, hit the database, and immediately violently crash. Why, and how must migrations be structured in CI/CD?
The application crashed because the Database schema rolled forward, but the application code rolled backward.
#CI/CD #Additional CI/CD Scenarios #L3 #DevOps #Automation #Pipelines
🎙️ Candidate Opening & Architectural Context
""In enterprise CI/CD, you cannot rely on manual interventions; every rollback and promotion must be declarative. The interviewer is testing: Backward-compatible migrations, Expand & Contract deployment patterns.. I structure my answer around systematic triage first, root cause analysis second, and permanent remediation third.""
Advertisement
🛠️ Production Runbook & Step-by-Step Resolution
1️⃣
Initial Diagnostics & Root Cause Analysis
The application crashed because the Database schema rolled forward, but the application code rolled backward.
- Expand (Release 1): The migration simply *adds* the new column. The old Application v1 ignores it. Both v1 and v2 can safely run simultaneously.
- Migrate Data (Release 2): Background jobs fill the new column cleanly.
- Contract (Release 3): Only after Application v1 has been completely decommissioned and deleted for weeks, a new migration is allowed to finally physically drop the old column.
2️⃣
Remediation & Permanent Safeguards
If Migration V2 dropped a column or renamed a table, Application v1 mathematically cannot function anymore because the database it expects no longer exists physically. *Architectural Fix:* You must strictly enforce the Expand and Contract Pattern for database migrations: This ensures instant, painless rollbacks are always architecturally possible.
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Pro-Tip: Expand (Release 1): The migration simply *adds* the new column. The old Application v1 ignores it. Both v1 and v2 can safely run s."
⚡ 60-Second Elevator Pitch Talking Points
- Expand (Release 1): The migration simply *adds* the new column. The old Application v1 ignores it...
- Migrate Data (Release 2): Background jobs fill the new column cleanly.
- Contract (Release 3): Only after Application v1 has been completely decommissioned and deleted fo...
Advertisement