HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
♥️
2기 최종 프로젝트 팀별 공간
/
📚
[팀06] Books
/
💾
엔지니어링 위키
/
✈️
Flyway 따라잡기
✈️

Flyway 따라잡기

Person
Date
Aug 5, 2022
Tag
조사
완료
비공개

Flyway란?

flyway는 데이터베이스 형상관리를 위한 오픈소스 툴입니다.
 

장점

  • flyway는 데이터베이스의 스키마를 버전별로 관리하며 이를 통해 변경 이력을 쉽게 추적할 수 있습니다.
  • 데이터베이스의 변경사항이 생길 때 쉽게 처리할 수 있습니다.
  • 서로 다른 환경에서의 database 변경사항을 자동으로 손쉽게 처리할 수 있습니다.
notion image
 

How to use

의존성

implementation 'org.flywaydb:flyway-core'
gradle에서 flyway를 사용하기 위한 의존성입니다.

yml 설정

flyway: enabled: true baseline-on-migrate: true
yml 파일의 flyway 설정입니다.
  • enabled
    • flyway를 사용하겠다는 설정으로 기본값은 true이며 명시적으로 사용한다는 것을 보여주기 위해 추가 합니다.
 
  • baseline-on-migrate
    • flyway는 버전 정보를 flyway_shcema_history 라는 테이블에서 관리하는데 해당 테이블을 자동으로 생성해주는 옵션입니다.
      기본값은 false로 히스토리 테이블이 이미 존재할 때 사용합니다.
       

Convention

notion image
  • Prefix
    • 파일명 앞에 붙는 접두사로 반드시 V또는 R 혹은 U로 시작해야만 flyway가 인식합니다
 
  • Version
    • 버전은 버전 마이그레이션에서 사용되며, 숫자와 .(점)이나 underscore 조합으로 구성됩니다.
 
  • Repeatable
    • 반복 가능한 마이그레이션에서 사용 되며 버전에 상관없이 매번 실행되는 스크립트로 버전 명시가 필요 없습니다.
      예시로 테스트를 위해 매번 더미데이터를 넣을 때 사용합니다.
 
  • Undo
    • 실행 취소를 의미하며 현재 버전을 이전 버전으로 되돌리는 경우 사용합니다.
 
  • Separator
    • 설명부분을 구분하기 위한 구분자이며 반드시 undersocre를 2개( __ ) 써야합니다.
       
  • Description
    • 보통 테이블에 저장시 설명으로 사용되며 밑줄이나 공백으로 단어를 구분합니다.
 
  • Suffix
    • 접미사로 보통 .sql을 사용합니다.
 

Scripts convention

V20220808__ALTER_COLUMN_BOOKSTORE;
 
 

사용 예시

예제

Book.java 도메인에 bookstore 컬럼을 추가한다고 가정합니다.
@Column(length = 500) private String bookStore;
해당 코드를 추가 합니다.
네이밍 컨벤션에 맞는 DDL 파일을 resources.db.migration에 추가합니다.
ALTER TABLE book ADD book_store varchar(500);
 

유의 사항

🔥
flyway로 등록된 순간을 기준으로 flyway가 DB버전 관리를 하게 되므로 해당 스크립트를 수정, 삭제를 하면 안됩니다.
즉 flyway로 관리하는 시점 이후로는 데이터베이스에 변경 내역이 생기면, flyway DDL을 만들어 관리해주어야 합니다.
또 새로 스크립트를 작성한다면, 스크립트의 버전을 이전보다 꼭 높게 적어야 합니다.
이전보다 낮은 숫자를 쓰면, Flyway가 이를 무시하고 적용하지 않기 때문입니다.
 

출처

https://backtony.github.io/spring/2021-10-22-spring-db-1/
https://tecoble.techcourse.co.kr/post/2021-10-23-flyway/
https://www.popit.kr/나만-모르고-있던-flyway-db-마이그레이션-tool/