대규모 애플리케이션을 개발하다보면 데이터베이스 스키마의 변경이 빈번하게 발생합니다. 이러한 변경은 여러 개발자가 함께 작업하는 경우에는 더욱 복잡해질 수 있습니다. 이런 상황에서 데이터베이스 스키마 관리를 위해 Liquibase
를 사용할 수 있습니다.
Liquibase
는 데이터베이스 스키마의 변경 사항을 추적하고 적용할 수 있게 해주는 오픈 소스 라이브러리입니다. 이를 통해 데이터베이스 스키마의 변경을 중앙에서 관리할 수 있어 개발자들 간에 일관된 데이터베이스 상태를 유지할 수 있습니다.
Liquibase
의 설치 및 설정
Liquibase
를 사용하기 위해서는 먼저 해당 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml
파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.3.5</version>
</dependency>
그리고 Liquibase
의 설정 파일인 liquibase.properties
파일을 프로젝트의 리소스 폴더에 생성합니다. 다음은 간단한 예시입니다.
# 데이터베이스 연결 설정
url=jdbc:mysql://localhost:3306/mydatabase
username=root
password=123456
# 변경 로그 파일 설정
changelog=classpath:db/changelog/db.changelog-master.xml
변경 로그 파일은 Liquibase
가 변경 사항을 추적하는 데 사용하는 파일입니다. 이 파일을 생성하여 원하는 변경 사항을 기록할 수 있습니다.
변경 사항 기록 및 적용
변경 로그 파일에는 데이터베이스 스키마 변경 사항을 기록하는 changeSet
이 포함됩니다. 각 changeSet
은 특정 변경 사항에 대한 정보를 포함하고 있으며, 이 정보를 바탕으로 Liquibase
가 데이터베이스 스키마를 적용합니다.
다음은 Liquibase
를 사용하여 새로운 테이블을 생성하는 예시입니다.
<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 author="John Doe" id="createTableExample">
<createTable tableName="users">
<column name="id" type="INT">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="name" type="VARCHAR(100)">
<constraints nullable="false" />
</column>
<column name="email" type="VARCHAR(100)">
<constraints nullable="false" />
</column>
</createTable>
</changeSet>
</databaseChangeLog>
위의 변경 로그 파일에는 users
테이블을 생성하는 changeSet
이 정의되어 있습니다. 이 파일을 실행하면 데이터베이스에 users
테이블이 생성됩니다.
변경 사항 적용 및 롤백
Liquibase
는 설정 파일에 지정된 데이터베이스에 대해 변경 사항을 적용하는 명령을 실행하여 데이터베이스를 갱신합니다. 변경 사항을 적용하려면 다음 명령을 실행합니다.
liquibase update
위 명령을 실행하면 Liquibase
는 변경 로그 파일에서 적용되지 않은 변경 사항을 찾고, 순차적으로 데이터베이스에 적용합니다.
변경 사항을 롤백하려면 다음 명령을 실행합니다.
liquibase rollback
위 명령을 실행하면 가장 최근에 적용된 변경 사항이 롤백됩니다.
결론
Liquibase
를 사용하면 여러 개발자가 함께 작업하는 상황에서도 데이터베이스 스키마의 변경을 효과적으로 관리할 수 있습니다. 이를 통해 데이터베이스 변경 사항 추적과 일관된 상태를 유지할 수 있으며, 애플리케이션의 유지 보수성을 향상시킬 수 있습니다.