[java] 자바에서 Liquibase와 함께 사용하는 클라우드 환경 데이터베이스 마이그레이션 방법

클라우드 환경에서 데이터베이스 마이그레이션은 애플리케이션을 업데이트하거나 확장할 때 필수적입니다. 이를 위해 대부분의 개발자들은 Liquibase를 사용합니다. Liquibase는 데이터베이스 스키마를 변경하는 것을 도와주는 도구로, 다양한 데이터베이스 관리 시스템을 지원하며, 버전 관리 및 롤백 기능도 제공합니다. 이번 글에서는 Liquibase와 함께 클라우드 환경에서 데이터베이스 마이그레이션을 어떻게 수행하는지 알아보겠습니다.

1. Liquibase 설정

먼저, Liquibase를 프로젝트에 추가해야 합니다. Maven 프로젝트의 경우, pom.xml 파일에 다음 의존성을 추가합니다:

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>4.5.0</version>
</dependency>

Gradle 프로젝트의 경우, build.gradle 파일에 다음 의존성을 추가합니다:

implementation 'org.liquibase:liquibase-core:4.5.0'

또한, Liquibase 설정 파일 (liquibase.properties 또는 liquibase.yml)을 작성해야 합니다. 해당 파일에서는 데이터베이스 연결 정보와 변경 로그 파일 등을 설정할 수 있습니다.

2. 변경 로그 작성

다음으로, Liquibase를 사용하여 실제 데이터베이스 변경 로그를 작성해야 합니다. 변경 로그는 데이터베이스 스키마 변경 작업을 정의하는 XML, JSON, SQL 등의 형식으로 작성됩니다. 예를 들어, changelog.xml 파일을 작성하여 변경 작업을 정의할 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                   http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.5.xsd">
 
    <changeSet id="1" author="yourname">
        <createTable tableName="users">
            <column name="id" type="int" autoIncrement="true">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(255)"/>
            <column name="email" type="varchar(255)"/>
        </createTable>
    </changeSet>
    
    <!-- 추가 변경 작업 정의 -->

</databaseChangeLog>

위 예시에서는 users 테이블이 생성되는 변경 작업을 정의하였습니다.

3. 데이터베이스 마이그레이션 실행

변경 로그를 작성한 후, 실제 데이터베이스 마이그레이션을 수행해야 합니다. Liquibase는 명령줄 툴을 제공하며, 이를 사용하여 마이그레이션을 실행할 수 있습니다. 다음 명령을 이용하여 마이그레이션을 실행할 수 있습니다:

liquibase --changeLogFile=changelog.xml --username=dbuser --password=dbpassword --url=jdbc:postgresql://localhost:5432/mydb update

위 명령에서는 changeLogFile, username, password, url을 각각 변경 로그 파일, 데이터베이스 사용자 정보, 데이터베이스 연결 URL로 설정하면 됩니다.

4. 롤백

실수로 잘못된 변경을 적용한 경우, Liquibase를 사용하여 롤백할 수도 있습니다. 다음과 같은 명령을 사용하여 롤백을 수행할 수 있습니다:

liquibase --changeLogFile=changelog.xml --username=dbuser --password=dbpassword --url=jdbc:postgresql://localhost:5432/mydb rollback <tag>

위 명령에서 <tag>는 롤백할 변경 로그 태그를 지정하는 부분입니다. 롤백을 수행하면 지정된 태그 이후의 변경 작업이 롤백됩니다.

결론

이렇게 Liquibase와 함께 클라우드 환경에서 데이터베이스 마이그레이션을 수행할 수 있습니다. Liquibase는 데이터베이스 변경 작업의 추적과 롤백을 지원하여 손쉽게 데이터베이스 스키마 관리를 할 수 있습니다. Liquibase의 자세한 사용 방법은 공식 문서를 참고하시기 바랍니다.

참고 자료: