0Pricing
SQL Academy · 강의

도구: Flyway, Liquibase, Sqitch

널리 사용되는 스키마 마이그레이션 도구와 버전 관리 모델, CI 통합 방식을 비교해보세요.

도구: Flyway, Liquibase, Sqitch은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

마이그레이션 도구를 사용하는 이유

스키마 변경은 다음 조건을 충족해야 합니다.

  • 소스 제어에서 버전 관리되어야 합니다.
  • 결정적인 순서로 적용되어야 합니다.
  • CI/CD에서 자동으로 실행되어야 합니다.
  • 때로는 롤백할 수 있어야 합니다.

Flyway

Java 기반의 파일 기반 마이그레이션 도구입니다. 각 파일의 이름은 버전 접두사로 시작합니다.

-- V1__create_users.sql
CREATE TABLE users (id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL);

-- V2__add_full_name.sql
ALTER TABLE users ADD COLUMN full_name TEXT;

-- Flyway tracks applied migrations in a flyway_schema_history table.

Flyway CLI

마이그레이션을 적용합니다.

flyway -url=jdbc:postgresql://localhost/mydb -user=app migrate
flyway info        # show what would run
flyway repair      # fix the history table after a failure

Liquibase

XML/YAML/JSON 또는 SQL 기반의 "변경 세트"를 사용합니다. Flyway보다 장황하지만 데이터베이스 간 추상화를 지원합니다.

<!-- changeset alice:001 -->
<createTable tableName="users">
  <column name="id" type="bigserial" autoIncrement="true">
    <constraints primaryKey="true"/>
  </column>
  <column name="email" type="text"><constraints nullable="false"/></column>
</createTable>

Liquibase 롤백 지원

각 변경 세트는 롤백 작업을 선언할 수 있습니다. Liquibase는 최근 N개의 변경을 롤백할 수 있습니다.

liquibase rollbackCount 1

Sqitch

네이티브 SQL을 사용하며 버전 번호 순서가 없습니다. 대신 명시적인 종속성 DAG를 사용합니다. 각 변경에는 배포, 검증, 되돌리기 스크립트가 있습니다.

sqitch add add_users -n 'Add users table'
# edits deploy/add_users.sql, verify/add_users.sql, revert/add_users.sql
sqitch deploy db:pg://localhost/mydb

세 도구 비교

FlywayLiquibaseSqitch
형식SQLXML/YAML/JSONSQL
버전 관리순차적순차적DAG
롤백제한적네이티브네이티브
검증 단계없음선택 사항기본 제공

프레임워크 기본 제공 도구

많은 웹 프레임워크에는 자체 마이그레이션 도구가 있습니다.

  • Rails: ActiveRecord 마이그레이션
  • Django: 기본 제공 마이그레이션
  • Node: knex, sequelize, prisma migrate
  • NestJS: TypeORM 마이그레이션

CI 작업 흐름

표준 pipeline은 다음과 같습니다.

  1. PR에 새 마이그레이션 파일을 포함합니다.
  2. CI가 빈 Postgres를 실행하고 모든 마이그레이션을 수행합니다.
  3. 마이그레이션된 스키마를 대상으로 자동화된 테스트를 실행합니다.
  4. 병합되면 스테이징 환경에 배포하고 마이그레이션을 실행한 뒤, 운영 환경에도 배포하고 마이그레이션을 실행합니다.

반복 가능한 마이그레이션

Flyway에는 "R__" 반복 가능한 마이그레이션이 있습니다. 변경될 때마다 다시 실행됩니다. VIEW와 저장 프로시저에 유용합니다.

-- R__users_view.sql  (re-applied whenever its checksum changes)
CREATE OR REPLACE VIEW active_users AS
  SELECT id, email FROM users WHERE deleted_at IS NULL;

스키마 차이 감지

migra, schemahero 또는 pgquarrel을 사용하여 예상 스키마와 실제 스키마 사이의 차이를 감지할 수 있습니다.

요약

도구를 하나 선택하고 계속 사용하십시오.

  • Flyway — SQL 우선, 단순함
  • Liquibase — 선언적 방식, 추상화 계층
  • Sqitch — DAG 종속성, 롤백 우선
  • 항상 소스 제어에서 버전 관리하고 CI에서 자동화하십시오.

빠른 확인

순차적인 버전 번호 대신 마이그레이션 간의 명시적인 종속성 DAG를 기본으로 사용하는 도구는 무엇입니까?

자주 묻는 질문

“도구: Flyway, Liquibase, Sqitch” 강의는 무료인가요?

네 — “도구: Flyway, Liquibase, Sqitch” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“도구: Flyway, Liquibase, Sqitch”에서 뭘 배우나요?

널리 사용되는 스키마 마이그레이션 도구와 버전 관리 모델, CI 통합 방식을 비교해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“도구: Flyway, Liquibase, Sqitch” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 온라인 마이그레이션: ALTER TABLE이 잠금을 사용하는 이유
  2. 동시 인덱스 생성(CREATE INDEX CONCURRENTLY)
  3. 다운타임 없는 열 이름 변경
  4. 도구: Flyway, Liquibase, Sqitch
← SQL Academy(으)로 돌아가기