EXPAND AND CONTRACT

무중단 변경은 확장, 이행, 축소로 나눈다

구버전과 신버전이 동시에 동작하는 기간을 두면 스키마를 한 번에 갈아엎지 않고 안전하게 전환할 수 있다.

확장

새 컬럼과 구조를 추가하고 기존 동작은 그대로 유지한다.

이행

코드가 새 구조를 쓰도록 바꾸고 기존 데이터는 채워 넣는다.

축소

구버전 코드가 사라진 뒤 오래된 컬럼과 호환 코드를 제거한다.

단계 목적 확인할 것
새 컬럼 추가 기존 코드와 충돌 없는 구조 확보 NULL 허용, 기본값, 인덱스 영향
이중 쓰기 이전 구조와 새 구조 데이터 동기화 쓰기 실패, 지연, 재시도 정책
백필 검증 과거 데이터를 새 구조로 채움 누락 행, 집계 차이
읽기 전환 조회 경로를 새 구조로 이동 구버전 롤백 가능성
구조 정리 참조가 사라진 컬럼 제거 로그와 모니터링에서 사용 0 확인

핵심: DROP은 마지막 확인 뒤에만 실행한다. 축소 전에는 구버전 코드가 남아 있는지 반드시 확인한다.