본문 바로가기
Spring/tool

Spring Boot에서 FlyWay 사용하기.

by include_hoany 2023. 2. 5.

Flay Way란?

단순하게 데이터베이스 구조에 대한 형상 관리를 위한 툴이라고 보시면 됩니다. 태초 데이터베이스의 구조부터 시작하여 현재까지의 변화과정을 기록하여 관리할 수 있습니다.

 

Spring Boot FlyWay

스프링 부트에서 FlyWay 의존성을 추가하고 flyway sql 버전별 파일관리와 gradle plugin을 통해 여러 개발자들이 개발을 해도 항상 같은 db상태를 유지할 수 있도록 손쉬게 관리할 수 있도록 구성할 수 있다.

 

Spring Boot 의존성 추가

baseline-on-migrate: true 설정시 히스토리를 관리하는 테이블이 자동생성됩니다.

 

FlyWay Sql 작성

기본적으로 /resource/db/migration에 sql문을 버전별로 작성하면 된다.

flyWay 공식 문서대로 네이밍 규칙을 따라서 작성해 나아가면 됩니다.

 

위처럼 네이밍 규칙을 지키며 작성하면 되지만 이게 너무 귀찮아서 찾아보니 우리의 갓텔리제이

플러그인중 flyway sql파일을 손쉽게 작성하게 해주는 플러그인을 찾았습니다.

 

인텔리제이 플러그인 검색 화면에서 flyway를 검색하면 flyway migration Creation 플러그인이 있습니다.

설치해 줍니다.

 

이클립스는… 화이팅

 

플러그인을 설치하면 new 항목중 flyway Migration항목이 추가된걸 확인할 수 있습니다.

 

테이블을 생성하는지, 수정하는지 행위를 작성해주면 자동으로 버전을 날짜로 구분을 해줍니다.

 

gradle 플러그인을 통해 손쉽게 db의 상태를 관리할 수 있습니다.

 

flaywayClean을 통해 테이블 전체를 삭제할 수 있고 flywaymigrate을 통해 최신 상태로 마이그레이션할 수 있습니다. 우리가 정의한 flyway sql 파일을 버전별로 처음부터 실행해줍니다. 같이 개발하는 개발자가 새롭게 db 구조를 변경해도 flyway를 통해 손쉽게 db변경상태를 관리할 수 있습니다.

 

flaywayClean을 하면 모든 테이블이 삭제된걸 확인할 수 있고.

 

flywayMigrate를 사용하면 flyway sql에 작성된 모든 파일이 실행됩니다.

 

Gradle.plugin flyway 추가하기

build.gradle

plugins {
	id "org.flywaydb.flyway" version "7.2.0"
}

flyway {
	url = 디비 URL
	user = 아이디
	password = 비밀번호
	driver = 드라이버 경로
}

위 작업처럼 해주면 인텔리제이 Gradle목록에 flyway항목이 추가됩니다.

 

이로써 Spring Boot 에서 FlyWay 사용법에대해 글을 마무리 하도록 하겠습니다.

 

꼭 참고해야할 주의점

  1. flyWay의존성 주입시 버전별 이슈가있습니다. flyway core 버전과 db버전에 호환을 신경쓰셔야 하고 특정버전의 경우 유료로 사용해야하는경우도 있습니다. 이 부분은 flyway 정책을 확인하시기 바랍니다.
  2. Prod, Local환경을 구분하여 사용해 주세요.