[java] Liquibase를 사용하여 자바 애플리케이션의 데이터베이스 마이그레이션 주기 관리하기

소개

데이터베이스 마이그레이션은 애플리케이션의 버전이 업데이트될 때 데이터베이스 스키마를 변경 또는 업그레이드하는 프로세스입니다. 이를 효과적으로 관리하기 위해 Liquibase를 사용할 수 있습니다. Liquibase는 자바 기반의 오픈 소스 도구로, 데이터베이스 스키마를 버전 관리하고 마이그레이션을 수행하는 데 도움을 줍니다.

설치 및 설정

  1. Liquibase를 사용하기 위해선 먼저 Liquibase 공식 웹사이트에서 Liquibase CLI를 다운로드하고 설치해야 합니다.
  2. Liquibase CLI를 설치한 후, 애플리케이션의 프로젝트 디렉토리에 Liquibase를 설정하는 파일인 liquibase.properties를 생성합니다.
  3. liquibase.properties에 데이터베이스 연결 정보와 변경 로그 파일 경로 등을 설정합니다.

변경 로그 작성

  1. 변경 작업을 기록하기 위해 changelog.xml이라는 이름의 파일을 생성합니다.
  2. changelog.xml 파일에 변경 작업을 추가합니다. 각 변경 작업은 <changeSet> 태그로 시작하며, 유니크한 ID와 작업을 설명하는 태그를 포함해야 합니다. 예를 들어:

     <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.3.xsd">
         <changeSet id="1" author="your-name">
             <createTable tableName="example">
                 <column name="id" type="int"/>
                 <column name="name" type="varchar(255)"/>
             </createTable>
         </changeSet>
     </databaseChangeLog>
    

마이그레이션 수행

  1. Liquibase CLI를 사용하여 데이터베이스에 마이그레이션을 수행합니다. 예를 들어, 커맨드 라인에서 다음과 같은 명령을 실행할 수 있습니다:

     liquibase --changeLogFile=changelog.xml update
    

    이 명령은 changelog.xml 파일에 정의된 변경 작업들을 실행하여 데이터베이스를 업데이트합니다.

  2. Liquibase는 변경 작업의 상태를 추적하기 위해 DATABASECHANGELOG 테이블을 사용합니다. 이 테이블은 변경 작업의 실행 이력과 상태를 기록합니다.

롤백(Rollback)

  1. Liquibase를 사용하여 마이그레이션을 롤백할 수도 있습니다. 예를 들어, 커맨드 라인에서 다음과 같은 명령을 실행하여 롤백할 수 있습니다:

     liquibase --changeLogFile=changelog.xml rollbackCount 1
    

    이 명령은 최근에 실행된 변경 작업을 롤백합니다.

결론

Liquibase를 사용하면 자바 애플리케이션의 데이터베이스 마이그레이션을 효과적으로 관리할 수 있습니다. Liquibase CLI를 사용하여 변경 로그를 작성하고, 마이그레이션을 수행하고, 롤백할 수 있습니다. 이를 통해 애플리케이션의 데이터베이스 스키마를 손쉽게 업데이트할 수 있습니다.

더 많은 정보를 원하시면 Liquibase 공식 문서를 참조하세요.