The Ultimate Showdown of Database Migration Tools by Pasha Finkelshteyn / Anton Arhipov @ Spring I/O
- 이 발표는 관계형 데이터베이스 마이그레이션 도구에 초점을 맞추며, 특히 애플리케이션 우선 접근 방식과 자체 설치형(box product) 소프트웨어에 중점을 둡니다. 📦
- 데이터베이스 마이그레이션은 애플리케이션과 DB 버전 동기화, 여러 개발자/DBA 협업, 그리고 고객이 자체적으로 업데이트 정책을 가진 '박스 제품'을 배포할 때 필수적입니다. 🔄
- 인기 있는 도구를 사용하지 않으면 많은 프로젝트에서 자체 마이그레이션 도구를 개발하게 되며, 이는 종종 기존 도구와 유사한 형태를 띱니다. 🛠️
- 발표는 청중이 QR 코드를 통해 투표하는 '복싱 경기' 테마로 진행되어 Flyway와 Liquibase의 기능을 비교하고 평가합니다. 🥊
- 예시로
full_name 컬럼을 first_name과 last_name으로 분리하는 데이터베이스 변경 시나리오를 제시합니다. 📝
- 데이터베이스 마이그레이션 시 이전 애플리케이션 버전의 호환성을 위해 최소 한 버전 동안은 이전 컬럼을 유지하는 것이 중요합니다. 🔙
- Flyway는 간단하고 가독성 높은 SQL 스크립트와 복잡한 데이터 변환, 바이너리 처리, 조건부 로직, 외부 상호작용 등을 위한 Java 기반 마이그레이션을 지원합니다. ☕
- Liquibase는 XML, YAML, JSON과 같은 선언적 형식, 메타데이터가 포함된 SQL, 그리고 복잡한 로직을 위한 Groovy DSL 등 다양한 변경 형식을 제공합니다. 📄
full_name을 분리하는 예시는 실제 이름 체계의 복잡성(다중 성, 순서 차이, 단일 이름 등) 때문에 불가능하며, 이름 관련 데이터 처리가 매우 어렵다는 점을 강조합니다. 🌍
- Liquibase는 자동 생성되거나 명시적으로 정의할 수 있는 롤백 기능을 제공하여, 마이그레이션 실패 시 이전 상태로 되돌릴 수 있습니다. ↩️
- Flyway는 명시적인 롤백 기능을 강조하지 않으며, 실제 업계에서는 마이그레이션 도구의 롤백보다는 데이터베이스 백업에 의존하는 경향이 있습니다. 💾
- Flyway는
V 접두사를 사용한 순차적 마이그레이션과 R 접두사를 사용한 반복 마이그레이션(매 업데이트마다 실행, 뷰/프로시저/앱 버전 추적 등에 유용)을 위한 명명 규칙을 사용합니다. 🔢
데브허브 | DEVHUB | The Ultimate Showdown of Database Migration Tools by Pasha Finkelshteyn / Anton Arhipov @ Spring I/O