본문 바로가기
Spring 7기 프로젝트/모임 플렛폼 프로젝트

Flyway와 데이터베이스 마이그레이션 관리

by JuNo_12 2025. 7. 23.

들어가며

데이터베이스 스키마를 관리할 때, 단순히 SQL 스크립트를 수동으로 실행하는 방식과 전문적인 마이그레이션 도구를 사용하는 방식 사이에는 큰 차이가 있습니다. 그중 Flyway는 자바 기반 프로젝트에서 널리 사용되는 데이터베이스 마이그레이션 툴로, 안정적이고 효율적인 스키마 관리를 돕습니다.


1. SQL 스크립트 수동 관리의 한계

수동으로 SQL 스크립트를 관리하는 경우 다음과 같은 문제점이 발생합니다.

  • 버전 관리 어려움: 누가 언제 어떤 스크립트를 실행했는지 추적이 어렵습니다.
  • 동기화 문제: 여러 개발자와 환경에서 데이터베이스 상태가 일치하지 않을 수 있습니다.
  • 실행 순서 보장 어려움: 스크립트 실행 순서를 잘못 맞추면 오류가 발생할 수 있습니다.
  • 롤백과 변경 관리 곤란: 오류 발생 시 이전 상태로 복구하기가 어렵습니다.
  • 자동화 어려움: 빌드 및 배포 자동화 파이프라인에 통합하기 어렵습니다.

2. Flyway의 주요 장점

Flyway는 이러한 문제를 해결하기 위해 다음과 같은 기능을 제공합니다.

  • 버전 기반 마이그레이션 관리: 각 마이그레이션 스크립트에 버전을 부여하고, 실행 내역을 데이터베이스에 기록합니다.
  • 자동 실행 및 순서 보장: 애플리케이션 실행 시 아직 실행되지 않은 스크립트를 자동으로 찾아 순서대로 적용합니다.
  • 환경 간 동기화 보장: 개발, 테스트, 운영 환경 간에 데이터베이스 상태를 일관되게 유지합니다.
  • 빌드 및 배포 자동화 지원: CI/CD 파이프라인에 쉽게 통합하여 자동으로 마이그레이션을 실행할 수 있습니다.

 

3. 실행 기록 확인

Flyway는 실행한 마이그레이션 내역을 flyway_schema_history라는 테이블에 저장합니다. 주요 정보는 다음과 같습니다.

  • 마이그레이션 버전 및 설명
  • 실행한 스크립트 이름
  • 실행 일시 및 실행자
  • 실행 성공 여부

해당 테이블을 조회하면 어떤 마이그레이션이 언제, 어떻게 실행되었는지 확인할 수 있습니다.

 

 

4. 빌드 및 배포에 적합한 이유

Flyway가 빌드와 배포 과정에 적합한 이유는 다음과 같습니다.

  • 자동 실행과 안정성: 배포 시 자동으로 필요한 마이그레이션만 실행하므로, 중복 실행이나 누락을 방지할 수 있습니다.
  • CI/CD 통합 용이: Jenkins, GitHub Actions 등 자동화 도구와 쉽게 연동하여 배포와 동시에 데이터베이스 스키마를 최신 상태로 유지합니다.
  • 협업 및 환경 일치: 여러 개발자와 다양한 환경에서 동일한 마이그레이션 스크립트를 적용해 데이터베이스 상태를 동기화합니다.

Flyway를 사용하면 데이터베이스 스키마 관리가 더욱 체계적이고 안전해지며, 개발과 배포 과정도 효율적으로 개선됩니다. 이를 통해 운영 중 발생할 수 있는 데이터베이스 관련 문제를 크게 줄일 수 있습니다.