WEBBOOK CHAPTER

CI/CD, 서버실에서 클라우드까지: 27장. Database migration을 expand-contract로 분리한다

27장. Database migration을 expand-contract로 분리한다

rolling 동안 old와 new app이 같은 DB를 쓴다. column rename/drop을 한 배포에 하면 rollback이 막힌다. add nullable/new table→dual read/write 또는 backfill→new path 전환→관측→old 제거를 여러 release로 나눈다.


R1 expand schema (old app compatible)
R2 application writes/reads new form
R3 backfill + verify invariants
R4 stop old use
R5 contract old schema after rollback window

대형 DDL lock과 replication lag를 staging data volume으로 시험한다. migration job은 한 번만 실행되고 재시작 가능해야 한다. app startup에 긴 destructive migration을 묶지 않는다. rollback이 data downgrade를 의미하는지 forward fix인지 결정한다.