- DB를 마이그레이션하는 Migration 오픈 소스 툴
- Database 의 DDL 이력을 쌓아서 관리하는 툴
- 이를 통해 DB 형상관리 및 마이그레이션을 진행할 수 있다.
- Svn보다 Git에 적합한 방식(SVN은 SubVersion 단어의 줄임말로 중앙집중관리식 형상관리 소스 관리 툴)
🤔 이걸 왜 쓰나요?
요구사항의 추가 또는 변경으로 인해 서비스의 개발 중 데이터베이스의 스키마는 계속해서 변경가능하다.
**Nullable
**한 컬럼을 단순히 not null로 바꾸는 정도의 제약 조건은 alter 정도로 가능하나, 대규모 변경 또는 구조의 변경(정규화 같은 이슈)를 거친다면 형상관리가 필요해진다.
장점
- 우리는 현재 dev fqa live 형상 등 모두 DB에 접근하여 DDL을 수행하여야 한다. 즉 실수가 발생할 수 도 있다.
- 소스코드 상에서 관리가 가능하다.
- 도입하기 쉽다.
단점
- 성공한 sql 파일에 대해서 변경을 권하지않는다(hash 값이 변하여 이후 마이그레이션에 문제가 생길 수 있다)
Fly Away 동작방식
- 마이그레이션은 버전 숫자 기준으로 순서대로 동작한다.
- flyway 적용은 application이 구동될 때 application 이 반영한다.
- jpa entity 클래스 와 마이그레이션 파일은 같이 작성해야한다(하나라도 누락되면 어플리케이션이 구동되지 않는다)