Justin-book

DB 스키마 및 마이그레이션 정책 (Database Schema & Migration)

2025-10-27

요약

  • 데이터베이스 변경은 서비스 안정성과 직결된다.
  • 본 문서는 스키마 설계 원칙, 마이그레이션 절차, 백필(Backfill) 정책을 정의한다.
  • 목표: 데이터 무손실 변경 / 일관된 스키마 관리 / 자동화된 배포 연동
항목내용
스키마 설계명시적 제약조건 + Index 관리
마이그레이션Flyway/Liquibase 기반 자동화
백필 정책데이터 손실 방지 우선
이력 관리버전 번호 + Git 추적

1. 스키마 관리 원칙

원칙설명
명시적 컬럼NOT NULL, DEFAULT 값 명확히 지정
ENUM 대신 코드 테이블 사용유지보수성 확보
FK 제약 최소화MSA 환경 유연성 확보
Index 관리쿼리 플랜 기반 Index 최적화

2. 마이그레이션 절차

flowchart LR A[ERD 설계] --> B[DDL 생성] B --> C[Migration Script 작성] C --> D[Staging 적용] D --> E[Review & 승인] E --> F[Production 반영]
  • 도구 예시: Flyway, Liquibase, Alembic
  • 모든 Migration Script는 Git 버전 관리 (/db/migrations)

3. 백필(Backfill) 정책

상황조치
신규 컬럼 추가기본값 지정 + 백그라운드 채우기
데이터 정합성 수정UPDATE 스크립트 + 검증 쿼리
대량 변경Batch Job 또는 ETL 도구 사용

4. 변경 이력 관리

파일목적
V001__create_user_table.sql신규 테이블 생성
V002__add_column_age.sql컬럼 추가
V003__fix_index.sql인덱스 변경

파일명 규칙: V{번호}__{설명}.sql