Child pages
  • flyway - Java 용 Database migration framework

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

http://flywaydb.org/getstarted/whyDatabaseMigrations.html 에서 발췌

 

ruby on rails 나 laravel framework을 보고 가장 놀랐던것 중에 하나는 db:migration 기능이었다.

...

Code Block
flyway -url="jdbc:mysql://localhost:3306/lesstif?useUnicode=true&characterEncoding=utf8" -user=dbusers -password=dbpwd -locations=/home/lesstif/proj1/sql -jarDir=/home/lesstif/prj1/flyway-jars

 

소감

  • flyway 는 open source 이나 상용 기술 지원으로 돈을 버는 사업 모델 채택함. 그래서 일반적인 오픈소스보다 문서 품질이 매우 훌륭함
  • maven, command-tool, API, Gradle, Ant 등과 연계해서 사용 가능하나 개인적으로는 command-tool 이 실제 운영 환경에 migrate 하기에 적합한것 같음(운영에
    • 운영 환경에서 web app
    반영을
    • 디플로이를 maven 으로
    하지않고 maven 으로 build 해서 나온 war 를 적용하므로 db migrate 에 maven 은 맞지 않음)
    • 바로 하지는 않으므로 db migration 작업에 메이븐을 사용하는 것 보다는 커맨드 라인 방식이 적절
  • ruby on rails 와 달리 rollback 이 없으나 실제로 db 작업시 rollback 은 리스크가 크므로 적용하지 않는다고 하니 빠져도 상관은 없을듯
  • schema 의 버전은 파일명으로 판단하므로 개발자가 버전을 직접 지정해 주어야 함. 파일의 버전이 같으면 에러가 발생하므로 실수 여지는 적을 것 같음
Warning
  • flyway clean 명령어는 적용된 migration 을 모두 삭제하므로 매우 위험하나 별도의 안전장치가 없음
    • 최초에 스키마 생성을 flyway 로 하고 그후 반영을 flyway 로 한 상태에서 clean 을 실행하면 운영중에 clean 명령을 실행하면 모든 table 이 drop 되어 버리므로 모든 데이타가 날아가 버림심각한 상황이 발생함
  • 운영환경에서 clean 명령은 사용하지 못하게 하는 안정장치가 필요함안전 장치가 필요함
    • 소스를 수정해서 운영용(clean 사용 불가)과 개발/테스트용 flyway(clean 사용 가능) 로 나누어 사용하는건 매우 번거롭고 flyway 새 버전이 나오면 소스 수정을 해야 하므로 좋은 방법은 아닌것 같음

 

Ref

http://flywaydb.org/

 

...