logo
logo
백엔드
Liquibase
데이터베이스 스키마 변경 사항을 추적, 관리 및 적용하기위한 오픈 소스 데이터베이스 독립적 라이브러리입
StackOverflow 질문 수: 3863
Github Stars : ★ 4706
사용 기업
직장
종합
소셜/컨텐츠
헬스케어
이커머스
techstack-logo
플렉스
techstack-logo
네이버
techstack-logo
브이씨앤씨
techstack-logo
헤렌
techstack-logo
퍼플아이오
기술 블로그 글
힐링페이퍼
Flyway 로 Java 에서 DB schema, seed 관리하기
안녕하세요, 힐링페이퍼에서 백엔드를 담당하고 있는 제이슨입니다! 사용자가 불편함 없이 빠르고 안정적으로 더 좋은 의료 서비스를 이용할 수 있도록 하는 역할을 하고 있습니다. 이번에 공유드릴 내용은 작년쯤 힐링페이퍼에 입사해서 가장 먼저 진행했던 Flyway 로 DB schema, seed 관리하기 입니다. Flyway 의 자세한 사용방법은 다루지 않지만, 실제로 적용하면서 필요한 현실적인 고민과 작업을 담았습니다. DB schema 를 코드로 관리한다는 것 저는 힐링페이퍼에 오기전에 Ruby, Elixir 를 경험했었는데, 그 때는 DB schema 이력을 코드로 관리하던 것이 일상적이었습니다. defmodule MyRepo.Migrations.AddWeatherTable do use Ecto.Migration def up do create table("weather") do add :city, :string, size: 40 add :temp_lo, :integer add :temp_hi, :integer add :prcp, :float timestamps() end end def down do drop table("weather") end end DB schema 를 코드로 관리했을 때 얻을 수 있는 이점은 아래와 같습니다. DB schema 의 변경 이력이 남는다 DB schema 도 어플리케이션 코드처럼 이력이 관리되어야 할 대상입니다. 예를 들어 뒤늦게 DB schema 에서 어떤 문제가 발견되었다면, 이력이 남아있지 않을 때와 남아있을 때의 문제 해결 난이도는 많이 다를 것입니다. DB schema 변경 작업이 더 안전해진다 코드로 관리한다는 것은 프로그래밍을 할 수 있다는 것입니다. 그래서 단순히 이력을 남기는 것에 그치지 않고 DB migration 작업 자체를 코드로 할 수 있게 됩니다. $ mix ecto.migrate $ mix ecto.rollback --step 1 사람이 직접 DB 에 작업하는 대신 코드로 실행하기 때문에 빼먹거나 실수할 여지가 줄어들고, 배포 시에 자동화도 가능합니다. 더 많은 사람이 협업 하기에 수월해진다 코드로 관리가 되기 때문에 서로 리뷰를 받을 수 있어 미리 문제를 파악하기 좋고, 실제 환경과 동일한 local 환경을 구축하기 쉬워져서 local 에서 개발하기가 훨씬 수월해집니다. 방안 위의 이점들을 힐링페이퍼에도 도입하기 위해 자료를 탐색해보았지만 Java 나 Spring 에는 아직 이 부분에 대한 좋은 방법을 찾을 수 없었고, 그밖에 사용해볼만한 것이 Flyway, Liquibase 두 가지였습니다. https://flywaydb.org/ 와 https://www.liquibase.org/ 각각의 장점은 다음과 같습니다. Flyway 사용하기 간단하다 Liquibase 대비 계층이 적고 작업이 단순해서 사용하기 간단합니다. 문서화가 잘 되어있다 이 작업을 했을 때는 2019년 7월쯤으로 Liquibase 의 문서가 보기 좋게 정리되어있지 않았었습니다. (지금도 그렇게 친절하지는 않은
liquibase
Copyright © 2024. Codenary All Rights Reserved.