Replies: 5 comments 4 replies
-
덮어쓰기가 가능하다면 롤백이 굳이 필요할 것 같다는 생각이 들지 않네요!
이 두 기능이 필요해진 시점에 Liquibase로 바꾸는 것이 맞다는 생각이 드네요 ! 고생하셨습니다. |
Beta Was this translation helpful? Give feedback.
-
와우 ~ 깔끔한 정리 감사합니다 ㅎㅎ 이 글에서 flyway와 liquibase의 비교 대상은 크게 3가지 (선언 방식, 롤백 지원, JAVA API 적용) 이었는데요 선언 방식에서는 flyway, 롤백 지원에서는 liquibase 가 이점을 갖고 있는 것으로 이해했습니다 :)
저의 경우 1번은 그리 높지 않아 보였습니다. Liquibase는 XML 기반이라 초기 진입 장벽이 있어 보일 수 있으나, 패턴이 일정해 템플릿화 가능하여 러닝 커브가 그리 높지는 않다는 판단이 들었습니다. 아래의 블로그에서 좀 더 많은 기능비교표를 찾아볼 수 있어서 첨부합니다 여기서 프로젝트에 적용할 수 있는 항목을 정리해본 결과 다음과 같습니다.
이러한 기능들이 개발 이후 유지보수 및 실시간 대응 측면에서 결정적일 거라고 생각도 들었던 것 같습니다. 하지만, liquibase가 많은 기능을 지원하고 있지만, 좀 더 수월하게 개발할 수 있다는 장점에서 flyway를 선택하는 분들도 계신 것 같아서 |
Beta Was this translation helpful? Give feedback.
-
히로가 남긴 글과 코멘트들도 잘 읽었어요. 프로젝트 상황 고려개인적으로 비교적 많은 기능을 지원하는 저희 프로젝트 목표가 일단 MVP를 빠르게 뽑아내는 것인데, '이 상황에서 DB 마이그레이션 도구에 대해서 따로 학습을 진행하는 것이 현실적으로 가능할까?' 의구심이 들었습니다. 특히나 배포 이전 단계에서는 기술적/기능적인 욕심보다는, 일단 빠르게 적용 가능한 것을 선택하는 것이 좋다는 의견이에요.
정리 / 결론따라서 낮은 러닝커브 뿐만 아니라 히로가 이미 |
Beta Was this translation helpful? Give feedback.
-
밍곰은 Liquibase 의 러닝 커브가 높다고 느껴진 것으로 보이고, 칼리는 러닝 커브가 그렇게 높지 않을 것으로 예상한 것처럼 보입니다. 또한 밍곰과 체체 모두 필요해지는 시점에 바꾸어도 될 것 같다는 의견인 것 같습니다. 저 역시도 Liquibase 의 러닝 커브가 어느 정도 높다고 느껴졌어요. 사실 저는 오히려 DSL 기반의 선언 방식보다 현재 SQL 이 더 직관적이라는 생각을 했습니다. 그리고 flyway 에 대한 동작 방식을 어느 정도 제가 익히고 있어, 밍곰의 말대로 현실적인 속도와 타협해 현재는 flyway 를 통해 툴을 세팅해볼까 싶습니다. 다른 의견 있으면 코멘트 부탁해요! |
Beta Was this translation helpful? Give feedback.
-
해당 부분을 고려한 이유: 컵 엔티티의 칼럼인 amount를 cupAmount로 변경했는데, ddl을 update로 두었더니 칼럼이 지워지지 않고 생기기만 하는 현상 발생 -> 찾는데 시간 걸렸음. ddl을 꼭 믿어야할까 라는 의심에서 시작 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
안전한 엔티티의 변경 및 유지를 위해 DB 마이그레이션 도구를 도입하고자 합니다.
저는 flyway 가 더 적합할 것이라는 결론을 내렸어요! 다른 의견이나 반박 환영해요 🤗
다음 글을 읽어보고, 자유롭게 의견 주시면 감사하겠습니다~!
📌 비교 대상
Flyway vs Liquibase
🔎 선정 기준
1. 선언 방식 차이
✅ Liquibase 예시 (XML DSL)
<createTable>
<column name="x" type="..."/>
<constraints primaryKey="true"/>
<changeSet id="1">...</changeSet>
✅ Flyway 예시 (SQL 기반)
📌 정리
2. 롤백 지원 여부
✅ Liquibase
❌ Flyway
📌 정리
3. Java API 제공 여부
✅ Flyway (직접 실행 가능)
Java 코드를 통해서도 마이그레이션 사용 가능
다음과 같은 상황에서 사용하기 용이
테스트 시에 특히 용이
위와 같은 형태로 테스트 시 필요하면 사용 가능
✅ Liquibase (SpringLiquibase 사용)
LiquiBase 는 Java API 는 제공되지 않지만, Spring 과 통합된 상황에서는 용이하게 사용 가능
@LisuiBaseBean
이 존재SpringLiquibase
빈을 주입해 유연하게 사용 가능다양한 데이터베이스 형태 제공
❌ flyway 는 RDBMS 만 제공
✅ LiquiBase 는 NoSQL 중 MongoDB 만 공식적으로 지원
Spring Boot 통합
✅ 두 도구 모두 Spring Boot 에서 공식적으로 지원
스키마 자동 생성
flyway 와 LiquiBase 모두 불가능
수동으로 사용자가 정의해줘야 함
그러나 flyway 는 직접 쿼리를 작성하지만, Liquibase 는 DSL 과 같이 도메인에 더 가깝게 정의하면 이를 SQL 로 변환해준다는 차이점은 존재.
조금 더 LiquiBase 가 도메인 측면에 가까운 추상화된 형태
위와 같이 조금 더 '언어'에 가까워 비개발자도 이해하기 용이할 수 있음
🔚 최종 판단
✅ Flyway
• SQL 친숙하고 직관적인 방식
• 러닝커브 적음
• 테스트 시 유연하게 활용 가능
✅ Liquibase
• DSL 기반 선언 → 비개발자도 접근 가능
• 롤백 기능 등 풍부한 기능 제공
• 단, DSL 학습이 필요 → 팀 상황 고려
💬 현재 물깜 프로젝트 팀 상황에서는
→ 러닝커브가 적고, SQL 기반의 Flyway가 적합하다고 판단됨
Beta Was this translation helpful? Give feedback.
All reactions