Skip to main content
프로덕션 환경에서 안전하게 데이터베이스 스키마를 변경하는 전략입니다.

기본 원칙

Zero Downtime

무중단 배포 호환성 유지

Backward Compatible

하위 호환성 점진적 변경

Rollback Ready

롤백 가능 항상 준비

Test First

테스트 우선 스테이징 검증

무중단 배포 패턴

패턴 1: Expand-Contract

새 구조 추가 → 마이그레이션 → 구 구조 제거 Step 1: Expand (확장) - 새 컬럼 추가
Step 2: Migrate (데이터 마이그레이션)
Step 3: Contract (축소) - 구 컬럼 제거
Expand-Contract 장점: - 무중단 배포 가능 - 언제든지 롤백 가능 - 데이터 손실 없음

패턴 2: 점진적 마이그레이션

위험한 변경 피하기

❌ 위험: 직접 컬럼 삭제

✅ 안전: 단계적 삭제

❌ 위험: NOT NULL 즉시 추가

✅ 안전: nullable → 마이그레이션 → NOT NULL

데이터 타입 변경

안전한 타입 변경 순서

인덱스 전략

동시성 인덱스 생성

CONCURRENTLY 주의사항: - 트랜잭션 외부에서 실행 - 시간이 더 오래 걸림 - 실패 시 INVALID 인덱스 남음

인덱스 생성 모니터링

외래 키 전략

대용량 테이블 FK 추가

NOT VALID + VALIDATE 장점: - 기존 데이터 검증 스킵 (빠름) - 새 데이터만 즉시 검증 - 나중에 백그라운드로 전체 검증

대용량 데이터 마이그레이션

Batch 처리

백그라운드 워커

배포 전략

Blue-Green Deployment

Rolling Deployment

테스트 전략

Migration 테스트

데이터 마이그레이션 테스트

모니터링

Migration 성능 추적

롱 러닝 쿼리 모니터링

체크리스트

Migration 실행 전

  • 스테이징 환경 테스트 완료
  • 프로덕션 백업 완료
  • 롤백 계획 수립
  • 다운타임 계획 (필요시)
  • 팀 공지
  • 모니터링 준비

Migration 실행 중

  • 에러 로그 모니터링
  • 성능 메트릭 확인
  • 애플리케이션 헬스체크
  • 사용자 피드백 확인

Migration 실행 후

  • 데이터 정합성 검증
  • 애플리케이션 기능 테스트
  • 성능 확인
  • 문서 업데이트
  • 롤백 테스트 (스테이징)

실전 사례

사례 1: 대용량 테이블 컬럼 추가

사례 2: 컬럼 이름 변경

다음 단계

마이그레이션 생성

Sonamu UI에서 생성

마이그레이션 실행

migrate run 명령어

롤백하기

변경 사항 되돌리기

동작 원리

자동 생성 이해하기