피드로 돌아가기
SQL-First PostgreSQL Migrations Without the Magic
Dev.toDev.to
Database

DSL과 ORM 종속성을 제거한 SQL-First PostgreSQL 마이그레이션 설계

SQL-First PostgreSQL Migrations Without the Magic

alexey.zh2026년 4월 12일7intermediate

Context

기존 마이그레이션 도구들의 과도한 DSL 도입과 ORM 결합으로 인한 스키마 관리 복잡도 증가. 프레임워크 종속적 추상화로 인해 도구 교체 시 마이그레이션 이력 유지 및 유지보수 비용이 상승하는 한계 발생.

Technical Solution

  • Plain SQL 파일 기반의 SQL-First 접근법을 통한 프레임워크 Lock-in 제거
  • 파일 명명 규칙(Naming Convention)에 마이그레이션 동작(Repeatable, Non-transactional)을 명시한 API 설계
  • Recursive Directory Scanning 방식을 통한 팀별 맞춤형 디렉토리 구조 및 관심사 분리 지원
  • Advisory Locking 도입으로 동시 실행 시 발생 가능한 레이스 컨디션 방지
  • Hash 기반의 변경 감지를 통해 Repeatable Migration의 효율적인 재실행 제어
  • Non-transactional Migration을 명시적으로 분리하여 VACUUM 등 트랜잭션 불가 작업의 안정적 수행 보장

- 마이그레이션 도구가 정의하는 DSL보다 표준 SQL의 이식성과 가독성을 우선 검토 - 인덱스 동시 생성(CREATE INDEX CONCURRENTLY) 등 트랜잭션 외 작업의 명시적 처리 방안 마련 - 도구의 수명보다 긴 데이터베이스 스키마 이력의 영속성을 고려한 저장 포맷 선택 - 배포 파이프라인 내 마이그레이션 동시 실행 방지를 위한 분산 락 메커니즘 적용

원문 읽기