도구: 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 failureLiquibase
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 1Sqitch
네이티브 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세 도구 비교
| Flyway | Liquibase | Sqitch | |
|---|---|---|---|
| 형식 | SQL | XML/YAML/JSON | SQL |
| 버전 관리 | 순차적 | 순차적 | DAG |
| 롤백 | 제한적 | 네이티브 | 네이티브 |
| 검증 단계 | 없음 | 선택 사항 | 기본 제공 |
프레임워크 기본 제공 도구
많은 웹 프레임워크에는 자체 마이그레이션 도구가 있습니다.
- Rails: ActiveRecord 마이그레이션
- Django: 기본 제공 마이그레이션
- Node: knex, sequelize, prisma migrate
- NestJS: TypeORM 마이그레이션
CI 작업 흐름
표준 pipeline은 다음과 같습니다.
- PR에 새 마이그레이션 파일을 포함합니다.
- CI가 빈 Postgres를 실행하고 모든 마이그레이션을 수행합니다.
- 마이그레이션된 스키마를 대상으로 자동화된 테스트를 실행합니다.
- 병합되면 스테이징 환경에 배포하고 마이그레이션을 실행한 뒤, 운영 환경에도 배포하고 마이그레이션을 실행합니다.
반복 가능한 마이그레이션
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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 온라인 마이그레이션: ALTER TABLE이 잠금을 사용하는 이유
- 동시 인덱스 생성(CREATE INDEX CONCURRENTLY)
- 다운타임 없는 열 이름 변경
- 도구: Flyway, Liquibase, Sqitch