[java] Flyway와 Java 프로젝트의 데이터베이스 보관 전략

Flyway는 개발자가 데이터베이스 스키마의 버전 관리와 마이그레이션을 쉽게 할 수 있도록 도와주는 오픈 소스 라이브러리입니다. Java를 사용하는 프로젝트에서 Flyway를 이용하여 데이터베이스 보관 전략을 구현하는 방법에 대해 알아보겠습니다.

1. Flyway 설정

Flyway를 사용하기 위해서는 우선 프로젝트에 Flyway의 종속성을 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다:

<dependency>
  <groupId>org.flywaydb</groupId>
  <artifactId>flyway-core</artifactId>
  <version>7.9.2</version>
</dependency>

Gradle을 사용한다면, build.gradle 파일에 다음과 같이 의존성을 추가합니다:

dependencies {
  implementation 'org.flywaydb:flyway-core:7.9.2'
}

이제 Flyway를 프로젝트에서 사용하기 위한 초기 설정을 해야 합니다. 이를 위해 application.properties 또는 application.yml 파일에 데이터베이스 연결 정보와 Flyway 설정을 추가합니다. 예를 들어, MySQL 데이터베이스를 사용하고 있는 경우 다음과 같이 설정할 수 있습니다:

# 데이터베이스 연결 정보
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=myusername
spring.datasource.password=mypassword

# Flyway 설정
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration

위의 설정에서 spring.flyway.locations는 마이그레이션 스크립트가 위치한 경로를 지정하는 것입니다. classpath:db/migration은 프로젝트 리소스 내에 db/migration 폴더에 마이그레이션 스크립트를 작성한다는 의미입니다.

2. 마이그레이션 스크립트 작성

마이그레이션 스크립트는 데이터베이스 스키마를 버전 관리하는 역할을 합니다. Flyway는 마이그레이션 스크립트의 파일 이름을 이용하여 순서를 결정하고, 해당 스크립트가 이미 적용되었는지 여부를 확인합니다.

마이그레이션 스크립트의 파일 이름 규칙은 다음과 같습니다: V[VERSION]__[DESCRIPTION].sql

예를 들어, 초기 데이터베이스 스키마를 생성하는 마이그레이션 스크립트의 파일 이름은 V1__create_schema.sql과 같이 작성할 수 있습니다. 이후 스키마에 대한 변경사항이 발생하면, 새로운 마이그레이션 스크립트를 생성하고 파일 이름에 버전과 설명을 포함시켜야 합니다.

마이그레이션 스크립트 작성 시 SQL 문법을 사용하여 원하는 데이터베이스 스키마 변경사항을 정의할 수 있습니다. 예를 들어, 테이블을 생성하거나 수정하는 등의 작업을 할 수 있습니다.

3. 마이그레이션 실행

Flyway가 설정되고 마이그레이션 스크립트가 작성되었다면, 프로젝트를 실행하여 마이그레이션을 실행할 수 있습니다. 애플리케이션을 실행하면 Flyway는 설정된 데이터베이스에 대해 마이그레이션 스크립트를 자동으로 실행하고, 적용되지 않은 스크립트들을 차례로 실행합니다.

마이그레이션 실행 후에는 데이터베이스 스키마가 변경된 내용에 따라 업데이트되며, 이후 프로젝트 실행 시 항상 최신 버전의 스키마가 로드됩니다.

4. 추가 기능과 활용 방법

Flyway는 다양한 기능을 제공하며, Java 프로젝트에서 활용할 수 있는 방법도 다양합니다. 일부 기능과 활용 방법은 다음과 같습니다:

Flyway에 대한 보다 자세한 내용은 공식 문서를 참고하시기 바랍니다.

참고 자료