클라우드 환경에서 데이터베이스 마이그레이션은 애플리케이션을 업데이트하거나 확장할 때 필수적입니다. 이를 위해 대부분의 개발자들은 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의 자세한 사용 방법은 공식 문서를 참고하시기 바랍니다.
참고 자료: