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