Web/TIL

Flyway 데이터베이스 마이그레이션

wjdwwidz 2024. 8. 11. 17:57

1. Flyway란 무엇인가?

Flyway는 데이터베이스 스키마의 버전 관리를 자동화하는 오픈 소스 도구이다. 소프트웨어 개발 과정에서 데이터베이스 구조는 자주 변경되며, 이러한 변경 사항을 체계적으로 관리하지 않으면 예기치 않은 문제가 발생할 수 있다. Flyway는 이러한 데이터베이스 변경 사항을 손쉽게 관리할 수 있도록 돕는다.

2. Flyway의 주요 기능

버전 관리 : Flyway는 데이터베이스 스키마의 변경 사항을 파일로 관리하며, 각 변경 사항에 대해 고유한 버전을 부여한다. 이로 인해 언제, 어떤 변경이 이루어졌는지 명확하게 추적할 수 있다.

자동화된 마이그레이션 : Flyway는 애플리케이션이 시작될 때 자동으로 데이터베이스 마이그레이션을 수행한다. 이는 새로운 버전의 스키마로 자동 업그레이드를 지원하여 개발과 배포 프로세스를 단순화한다.

다양한 데이터베이스 지원 : Flyway는 MySQL, PostgreSQL, Oracle, SQL Server, H2 등 여러 가지 데이터베이스 시스템을 지원한다. 따라서 다양한 환경에서 쉽게 사용할 수 있다.

간단한 사용법 : Flyway는 설정이 간단하며, SQL 파일 또는 자바 코드로 마이그레이션을 작성할 수 있다. 이를 통해 개발자가 기존의 워크플로우에 쉽게 통합할 수 있다.

3. Flyway 사용 방법

Flyway는 설치 후 설정 파일을 통해 쉽게 사용할 수 있다. 기본적으로 `flyway.conf` 파일에 데이터베이스 연결 정보와 마이그레이션 파일 경로를 설정하고, SQL 스크립트를 `V1__init.sql`, `V2__add_table.sql`과 같은 형식으로 작성하여 저장한다. Flyway는 이러한 스크립트를 읽고, 데이터베이스 버전에 맞춰 순차적으로 적용한다.

 

flyway migrate

 

위 명령어를 실행하면 Flyway가 지정된 경로의 SQL 스크립트를 실행하여 데이터베이스를 최신 상태로 업데이트한다.

 

4. Flyway의 장점

효율적인 협업: 여러 개발자가 동시에 데이터베이스를 변경해야 하는 상황에서 Flyway는 충돌을 방지하고, 변경 사항을 효율적으로 관리할 수 있도록 돕는다. 이를 통해 팀 전체의 작업 효율성이 크게 향상된다.

신뢰성: Flyway는 각 마이그레이션 파일을 실행한 후, 성공 여부를 기록하고, 오류가 발생하면 롤백할 수 있는 기능을 제공한다. 이를 통해 데이터베이스 마이그레이션의 신뢰성을 보장할 수 있다.

유연성: Flyway는 다양한 환경에서 사용할 수 있으며, 필요에 따라 커스터마이징이 가능하다. 예를 들어, 특정 환경에 맞춰 마이그레이션 순서를 조정하거나, 스크립트를 조건부로 실행할 수 있다.

5. 결론

Flyway는 데이터베이스 스키마 변경을 관리하는 데 있어 매우 유용한 도구이다. 간단한 설정과 사용법, 다양한 기능을 통해 개발자가 데이터베이스 마이그레이션을 효율적이고 안정적으로 수행할 수 있게 돕는다. 데이터베이스 스키마의 변경이 빈번한 프로젝트라면, Flyway를 도입하여 관리의 복잡성을 줄이고, 전체 개발 프로세스의 일관성을 유지하는 것이 좋다.