-
[Briefing] Flyway로 DB 스키마 형상 관리하기 - 1Project/Briefing 2024. 3. 8. 18:12
Briefing 프로젝트를 진행하는 과정에서 엔티티간 매핑 변동으로 인해 DB 스키마 수정이 필요하게 되었다.
초기 개발 단계가 아닌 런칭이 된 서비스고 실사용자가 존재하기 때문에, 기존 데이터를 마이그레이션 해야하는 불가피한 상황이 왔다.
이런 상황에서 수작업으로 데이터를 일일이 마이그레이션 하는 건 비효율적이라고 판단하여, 데이터베이스 버전 관리를 위해 Flyway 라이브러리를 도입하게 되었다!
🔍 Why Flyway?
데이터베이스 형상 관리를 하는 툴로는 주로 Flyway, Liquibase가 많이 사용되고 있다.
Liquibase는 다양한 포맷을 지원하고, 스냅샷을 지원하는 등 여러 환경에서의 형상 관리를 유연하게 다룰 수 있게 도와준다.
반면, Flyway는 설정이 매우 간단하고 Java 생태계에 잘 통합되어 일관성을 제공하기 때문에 Flyway를 선택하게 되었다. (레퍼런스도 더 많은 것 같다)
🔍 Flyway 란?
Flyway는 데이터베이스 버전 관리를 도와주는 오픈소스 데이터베이스 마이그레이션 툴이다. 이를 통해 데이터베이스의 변경 사항을 추적하고, 업데이트 및 롤백을 용이하게 할 수 있다. 소스 코드의 버전을 Git으로 관리하는 것처럼, Flyway를 사용하여 데이터베이스의 버전을 관리할 수 있다.
JPA 환경에서 엔티티의 구조가 변경될 때, 로컬 또는 개발 서버에서는 Hibernate의 ddl-auto 기능을 사용해 'create'나 'update'로 설정함으로써 자동 동기화를 할 수 있다. 하지만 운영 환경에서 테이블을 'drop'하는 것은 큰 위험을 수반하기 때문에, Flyway를 도입해 안전하게 데이터 마이그레이션을 진행하고자 한다.
🔍 Flyway 동작 방식
1. Flyway를 설정하고 실행하면, 'SCHEMA_VERSION' 이라는 이름의 버전 관리용 테이블이 생성된다.
2. 테이블이 생성되면, Flyway는 마이그레이션을 파일을 찾기 위해 파일 시스템이나 클래스 패스를 탐색한다.
3. 검색된 마이그레이션 파일들은 버전 번호에 따라 정렬되고, 순서대로 실행되어 데이터베이스에 적용된다.
📝 이어지는 포스팅
➡︎ Flyway로 DB 스키마 형상 관리하기 - 2
📋 참고 자료
728x90'Project > Briefing' 카테고리의 다른 글
[Briefing] Flyway로 DB 스키마 형상 관리하기 - 2 (6) 2024.03.09