실제 AWS 에서 프로젝트를 실행시키기 위해 AWS의 RDS를 사용하기로 하였습니다. 그래서 로컬 DB에서 만들었던 테이블을 RDS에서도 그대로 적용할 방법이 없나 찾던중 DB migration tool인 flyway를 찾게 되었고 이를 적용하였습니다.
Flyway는 DB 형상관리 툴로 변경된 데이터베이스의 스키마나 데이터를 버전별로 관리하고 누락을 방지합니다.
실제로 툴을 적용시키고 DB에 접속해서 보면 다음과 같이 버전별로 적용되고 관리됨을 알 수 있습니다.
또한 checksum 값으로 해당 스크립트의 변조여부를 확인하여 불일치시 에러가 납니다
또한 다양한 네이밍 방식으로 대상파일의 버전을 파일명을 통해 구분할 수 도 있습니다.
의존성을 다음과 같이 추가합니다
// flyway 설정
implementation 'org.flywaydb:flyway-core'
application.yml 파일에 다음과 같이 설정합니다
# #flyway setting
flyway:
sql-migration-suffixes: .sql
locations: classpath:/db/migration
baseline-on-migrate: true
baseline-version: 0 : 시작할 버전 번호 설정
flyway 공식 홈페이지에서 확인하면
prefix : V(버전), U(되돌리기), R(반복) 로 지정해줍니다.
Version : 버전 에서만 사용되며, 점이나 언더스코어(_언더바) 로 구분할 수 있습니다(반복은 제외)
Seperator : 언더바 2개로 구분합니다
Description: 해당 스키마나 변경점을 적습니다
Suffix: 확장자를 적습니다
이 파일들의 위치는
resources -> db -> migration
에 작성합니다
주의할점은 꼭 버전에 맞춰서 작성해야한다는점, 그리고 시드 파일이 있어야 한다는점(V0, 최초 테이블 생성),언더바 2개로 구분짓지 않으면 인식하지 못한다는 점입니다.
참고 자료
1. https://www.popit.kr/%EB%82%98%EB%A7%8C-%EB%AA%A8%EB%A5%B4%EA%B3%A0-%EC%9E%88%EB%8D%98-flyway-db-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98-tool/
2. https://blog.gangnamunni.com/post/introducing-flyway/