Spring Boot Flyway 적용 방법
Flyway
- 데이터베이스의 형상관리를 목적으로 하는 툴
- 데이터베이스의 DDL의 이력을 쌓아서 DDL이 어떻게 변화되었는지 관리하는 툴로 이용가능
목표
- Spring Boot로 서버를 실행할 때 DDL이 실행되어 최신버전으로 관리할 수 있도록 한다.
의존성 환경 설정
- flyway의 Java API를 사용하기 위해 org.flywaydb:flyway-core 모듈에 대한 의존성이 필요
implementation("org.flywaydb:flyway-core:6.5.7")
application.properties 혹은 application.yml 파일 설정
- 예제는 application.yml로 작성되었습니다.
spring: flyway: locations: classpath:/db/migration #migration 파일 위치 baseline-on-migrate: true #flyway_schema_history 자동 생성 여부 baseline-version: 0 #최초 버전 정보
마이그레이션 파일
- resource/db/migration 폴더 생성 후, V1__init.sql 파일을 생성
- 경로 변경은 spring.flyway.locations 에서 수정할 수 있습니다.
- V1__init.sql
CREATE TABLE user ( id INT(5) PRIMARY KEY, user_id VARCHAR(30) NOT NULL, user_name VARCHAR(30) NOT NULL, create_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
- 마이그레이션 파일은 꼭 지켜야할 네이밍 규칙이 있습니다.
V1__init.sql PRIFIX : V VERSION : 1 __ DESCRIPTION : init SUFFIX: .sql
- {PRIFIX}{VERSION}__{DESCRIPTION}{SUFFIX} 순으로 지켜져야합니다.
- VERSION과 DESCRIPTION사이에는 반드시 언더바(__)가 2개 존재해야 인식할 수 있습니다.
Spring RUN
- Spring을 실행하는 순간 DDL이 실행되어 user 테이블과 flyway_schema_history 테이블이 만들어지는 것을 볼 수 있습니다.
장점
- flyway_schema_history 테이블을 통해 실행 내역을 확인할 수 있습니다.
- 테이블 스키마를 변경하거나 새로운 테이블을 생성하여 형상 관리할 수 있습니다.
- 다른 개발 Local 혹은 운영이나 개발서버에 DB 스키마를 수정할 필요없이 flyway로 관리하여 쉽게 배포할 수 있습니다.
댓글남기기