8단계
8단계 — Expand/Contract와 멱등 백필로 스키마 바꾸기
0회 조회
8단계 — Expand/Contract와 멱등 백필로 스키마 바꾸기
운영 테이블은 새로 만들 수 없습니다. 기존 데이터와 구 버전 코드가 살아 있는 동안 호환 구조를 먼저 넣고, 검증 뒤 옛 계약을 제거해야 합니다.
안전한 순서
호환 컬럼/인덱스 추가 → 양쪽 코드 배포 → 작은 배치 백필
→ 건수·NULL·샘플 검증 → 새 경로 전환 → 사용하지 않는 계약 정리
Warragon의 Compose DB는 Admin SQL을 SSOT로 쓰며 CREATE IF NOT EXISTS와 멱등 보정을 사용합니다. Da2ari는 Supabase migration 이력을 소유하므로 이미 적용된 migration을 고치지 않습니다. 시작 시 자동 schema init이나 ORM synchronize는 이 경계를 침범합니다.
백필은 batch size·commit 주기·재시작 지점을 갖고, 같은 행을 두 번 처리해도 결과가 변하지 않아야 합니다. 실패한 트랜잭션은 rollback되고 다음 실행이 같은 목표 상태로 수렴해야 합니다. 파괴적 DROP, 운영 volume 재생성, 무검증 ALTER는 복구 증거가 아닙니다.
DDL과 시드를 묶은 관리자 명령도 동시 실행을 허용하면 안 됩니다. Codingstairs의 all-codingstairs는 PostgreSQL advisory lock을 먼저 획득하고, 다른 Admin replica가 이미 실행 중이면 409 INIT_IN_PROGRESS로 빠르게 종료합니다. UI의 버튼 비활성화만 믿지 않고 서버와 DB 세션 경계에서 중복 실행을 막아야 합니다.