새 컬럼과 구조를 추가하고 기존 동작은 그대로 유지한다.
EXPAND AND CONTRACT
무중단 변경은 확장, 이행, 축소로 나눈다
구버전과 신버전이 동시에 동작하는 기간을 두면 스키마를 한 번에 갈아엎지 않고 안전하게 전환할 수 있다.
코드가 새 구조를 쓰도록 바꾸고 기존 데이터는 채워 넣는다.
구버전 코드가 사라진 뒤 오래된 컬럼과 호환 코드를 제거한다.
| 단계 | 목적 | 확인할 것 |
|---|---|---|
| 새 컬럼 추가 | 기존 코드와 충돌 없는 구조 확보 | NULL 허용, 기본값, 인덱스 영향 |
| 이중 쓰기 | 이전 구조와 새 구조 데이터 동기화 | 쓰기 실패, 지연, 재시도 정책 |
| 백필 검증 | 과거 데이터를 새 구조로 채움 | 누락 행, 집계 차이 |
| 읽기 전환 | 조회 경로를 새 구조로 이동 | 구버전 롤백 가능성 |
| 구조 정리 | 참조가 사라진 컬럼 제거 | 로그와 모니터링에서 사용 0 확인 |
핵심: DROP은 마지막 확인 뒤에만 실행한다. 축소 전에는 구버전 코드가 남아 있는지 반드시 확인한다.