Expand→Transition→Contract
위험 변경 분해, static check, staging rehearsal와 배포 창
DROP·RENAME·타입 축소·NOT NULL을 앱과 한 번에 배포하면 rollback이 어려워집니다. 새 구조를 추가하는 Expand, backfill·dual write·검증의 Transition, 구 구조를 제거하는 Contract로 나누고 최소 두 앱 버전이 공존하는 호환성 창을 둡니다.
| 단계 | 변경 | 통과 증거 |
|---|---|---|
| Expand | nullable column·index·new table | 구/신 앱 모두 동작 |
| Transition | backfill·dual read/write | 정합성·완료율·성능 |
| Contract | 구 read/write·column 제거 | 사용 0·rollback window 종료 |
| Observe | 30~60분 집중 관찰 | error·lock·slow query 정상 |
- 위험 SQL 탐지DROP·ALTER TYPE·대규모 UPDATE를 CI에서 표시합니다.
- 호환성 설계구·신 앱이 동시에 동작하는 schema contract를 만듭니다.
- Rehearsalstaging 데이터 규모와 timing으로 실행·rollback을 연습합니다.
- 작은 배포핵심 테이블은 한 번에 하나, 저트래픽 창에 적용합니다.