[java] Flyway의 스크립트 작성 시 주의할 점

Flyway는 데이터베이스 마이그레이션 도구로, 애플리케이션의 데이터베이스 스키마를 관리하는 데 도움을 줍니다. Flyway 스크립트를 작성할 때는 몇 가지 주의할 점이 있습니다. 아래에서 살펴보겠습니다.

1. 스크립트 이름 규칙 준수

Flyway는 스크립트를 실행할 때 알파벳 순서대로 정렬하여 처리합니다. 따라서 스크립트 파일의 이름에는 접두사로 버전 번호를 포함해야 합니다.

예를 들어, V1create_table.sql, V2__insert_data.sql과 같이 스크립트 파일의 이름이 ‘V{버전 번호}{스크립트 내용}.sql’ 형식을 따라야 합니다.

2. 반영할 DDL 및 DML 작성

Flyway 스크립트는 데이터베이스 스키마를 생성하거나 수정하는 DDL(Data Definition Language) 문장과 데이터를 추가, 수정, 삭제하는 DML(Data Manipulation Language) 문장으로 구성됩니다. 스크립트를 작성할 때 반영하려는 작업에 맞는 DDL 및 DML 문장을 작성해야 합니다.

예를 들어, ‘CREATE TABLE’ 문장으로 테이블을 생성하고, ‘INSERT INTO’ 문장으로 데이터를 추가할 수 있습니다.

3. 버전 관리

Flyway는 스크립트 파일의 버전 번호를 기록하여 반영 여부를 판단합니다. 이미 반영된 스크립트보다 낮은 버전의 스크립트는 Flyway가 자동으로 실행하지 않습니다. 따라서 스크립트를 수정하거나 새로운 스크립트를 작성할 때는 버전 번호를 잘 관리해야 합니다.

4. 롤백 스크립트 작성

Flyway는 마이그레이션 작업을 롤백할 수 있는 기능을 제공합니다. 롤백을 위해서는 반드시 롤백 스크립트를 작성해야 합니다.

롤백 스크립트는 반영된 스크립트를 역순으로 실행하여 이전 상태로 되돌립니다. 롤백 스크립트의 파일 이름은 ‘R__{스크립트 내용}.sql’ 형식을 따르며, 반드시 이전 스크립트의 버전 번호와 일치해야 합니다.

5. 스크립트 실행 순서 확인

Flyway는 스크립트를 실행할 때 알파벳 순서대로 처리합니다. 이에 따라 스크립트의 실행 순서를 명확히 확인해야 합니다. 만약 스크립트 간의 의존 관계가 있다면, 버전 번호를 적절히 붙여 실행 순서를 조절해야 합니다.

6. 데이터 손실 주의

Flyway는 기본적으로 스크립트를 실행할 때 데이터 손실을 예방하기 위해 테이블을 재생성하지 않습니다. 따라서 스크립트를 작성할 때 데이터베이스를 조작하는 작업에 주의해야 합니다. 데이터 손실 가능성이 있는 스크립트 작성 시에는 미리 백업을 하고 실행할 것을 권장합니다.

Flyway 스크립트 작성 시 이러한 주의사항을 지켜야 데이터베이스 마이그레이션 작업을 원활하게 수행할 수 있습니다. Flyway 공식 문서를 참고하면 보다 자세한 내용을 확인할 수 있습니다.

참고: Flyway 공식 문서