Ch4. 마이그레이션 전략
Expand/Contract 기반 무중단 마이그레이션과 위험 변경 분리 전략
기본 원칙
- 스키마 변경과 애플리케이션 배포를 한 번에 묶지 않습니다.
- 파괴적 변경(
DROP,RENAME)은 별도 릴리스로 분리합니다. - 모든 변경은 되돌릴 수 있는 단계로 쪼갭니다.
Expand/Contract 패턴
Expand 단계
- nullable 컬럼 추가
- 새 인덱스 생성
- 기존 로직과 호환되는 기본값/트리거 준비
Transition 단계
- 백필 배치 수행
- 애플리케이션 Dual Write/Read fallback 적용
- 데이터 정합성 검증
Contract 단계
- 구 컬럼/인덱스 제거
- fallback 코드 제거
- 운영 지표 안정 확인
Prisma Migrate 운용 규칙
- 로컬:
prisma migrate dev - 배포:
prisma migrate deploy - 드리프트 점검:
prisma migrate status,prisma migrate diff
migrate dev는 개발 워크플로우 전용입니다.
프로덕션에서는 migrate deploy 외 명령을 사용하지 않도록 정책화합니다.
위험 변경 분리 규칙
| 변경 유형 | 처리 방법 |
|---|---|
| 컬럼 타입 축소 | 새 컬럼 추가 후 점진 전환 |
| 컬럼 이름 변경 | 새 컬럼 추가 + 백필 + 코드 전환 후 제거 |
| 대용량 인덱스 생성 | 트래픽 저점 배치, 가능하면 online 옵션 활용 |
| NOT NULL 추가 | 사전 백필 + 검증 후 제약 적용 |
배포 단위 설계 예시
Release A: 새 컬럼 추가 + 앱에서 dual write 시작
Release B: 백필 완료 + read 경로 전환
Release C: 구 컬럼 제거 + 코드 정리Prisma Next: Graph-Based Migrations 전망
2026-03-04 Prisma 블로그에서 Prisma Next(→ Prisma 8) 발표 시 선형 마이그레이션 파일 대신 Git-like 브랜치 모델의 graph-based migrations이 예고되었습니다. 현재 Prisma 7의 선형 마이그레이션은 12개월간 지원이 보장됩니다.
Prisma Next 공식 로드맵 (2026-03-20 갱신)
| 시기 | 마일스톤 | 비고 |
|---|---|---|
| 2026년 4월 | 외부 기여 오픈 + 안정 확장 API | 커뮤니티 참여 시작 |
| 2026년 5월 | Early Access (Postgres + SQLite) | 첫 공개 프리뷰 |
| 2026년 6~7월 | Postgres GA | 프로덕션 사용 가능 |
Prisma Next는 Prisma 7과 호환 레이어를 제공하여 병렬 실행이 가능하도록 설계되고 있습니다. 따라서 Prisma 7 → Next 전환은 빅뱅 마이그레이션이 아닌 점진적 전환이 가능할 전망입니다.
이 핸드북의 Expand/Contract 패턴과 migrate deploy 기반 워크플로우는 Prisma 7 전제이며,
Prisma Next GA 이후 마이그레이션 파이프라인 구조를 재설계해야 합니다.
금지 안티패턴
- 단일 릴리스에서
ALTER TABLE ... DROP COLUMN+ 앱 코드 동시 반영 - 트래픽 피크 시간에 대용량 백필 실행
- 마이그레이션 SQL을 코드 리뷰 없이 즉시 배포
- 복구 계획 없이 파괴적 변경 수행