소스코드의 변경사항과 버전은 Git을 통해 관리하지만, DB의 변경사항을 관리할 때는 Flyway를 활용할 수 있습니다.
Flyway를 활용한다면, 수동으로 sql문을 실행하고 애플리케이션을 재구동해야하는 번거로움을 해소할 수 있게 됩니다. Flyway에 관련한 개념과 was에서의 설정, Convention 등을 알아보겠습니다.
Flyway
- open-source database-migration tool
- DB Migration
- DB Schema의 version을 관리하기 위한 방법
- DB의 변경사항을 추적하고, 업데이트 및 롤백을 보다 쉽게 할 수 있도록 도와줍니다.
- Schema
- 데이터베이스의 구조와 제약조건에 관하여 전반적인 명세를 기술
- 개념 스키마: 전체적인 view
- 내부 스키마: 물리적인 저장장치에서 DB가 저장되는 방법을 기술
간략하게 DB Migration을 위한 도구로 말할 수 있을 것 같습니다. 이제 DB Migration이 중요한 이유에 대해서 설명드리겠습니다.
DB Migration 목적
- 프로젝트에서 DB가 다양한 환경에서 존재하고, local 환경에서 개발 시 DB Schema의 구조가 변경될 가능성이 매우 높습니다
- 배포 환경에서는 스키마 변경에 대한 DDL을 작성해줘야 하는데, Flyway를 통해 해당 불편사항들을 손쉽게 해결할 수 있습니다
- DB에 접속해서 SQL을 수정하지 않고, Git 처럼 SQL을 관리할 수 있게 됩니다.
즉, 운영환경에서 DB Migration을 위해 사용됩니다.
Flyway 설정 (application.properties)
- spring.flyway.enable = true (default)
- spring.flyway.baseline-on-migration: 변경 이력 테이블을 생성
#flyway
flyway.enable = true
flyway.baseline-on-migrate=true
flyway.locations=classpath:db/migration
flyway.url=jdbc:mariadb://localhost:3306/tiportal
flyway.schemas=tiportal
flyway.user=root
flyway.password=admin123
Flyway Script Convention
- 반드시 /src/main/resource/db/migration 경로에 작성해주셔야 합니다.
- [Prefix] [Version] [Separator] [Description] [Suffix]
- ex) V1__init.sql
주의사항
- DB 스키마에 변경사항이 있을 경우, 반드시 Flyway Script를 작성해줘야 합니다.
- 작성하지 않으면, 애플리케이션이 구동되지 않습니다.
DB 형상관리 도구에 대해 정리해보았는데, Flyway 관련 설정, 명명 규칙만 잘 준수한다면 손쉽게 적용해 볼 수 있는 좋은 도구라고 생각되네요.
'Database' 카테고리의 다른 글
[DB] MySQL Replication, Garela Cluster (0) | 2023.09.21 |
---|---|
[DB] MariaDB, MySQL 비교 (0) | 2023.09.20 |
[DB] Redis란 무엇인가? (0) | 2023.09.08 |