-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: flyway 도입 #130
chore: flyway 도입 #130
Conversation
- gpa_score, language_test_score 테이블 추가 - 이름이 맞지 않는 FK 이름 수정 - 누락되었던 FK 추가 - application.is_delete 추가
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
궁금한 부분들에 대해 코멘트 남겼습니다😊
추가적으로, 전체 스키마를 생성하는 V1__init.sql
과 같은 파일이 없어도 괜찮은 이유가 조금 헷갈리는데요😓
제가 이해하고 있는게 맞는지 확인 부탁드립니다.!
- 지금의 db : 기존 것들이 이미 만들어져있는 상태이므로 필요하지 않음
- 나중에 마이그레이션을 또 한다고 하더라도 : 기존 것을 dump 할 것이므로, 이미 만들어져있는 상태. 따라서 필요하지 않음
그리고 flyway 로 DB 형상 관리를 하는만큼,
application-db.yml 의 ddl-auto 설정을 prod 와 dev 모두 validate
로 바꾸는게 좋겠습니다.
Entity와 데이터베이스의 설정이 일치하지 않으면 실행조차 되지 않도록요!
src/main/resources/db/migration/V2__add_gpa_score_and_language_test_score.sql
Show resolved
Hide resolved
src/main/resources/db/migration/V2__add_gpa_score_and_language_test_score.sql
Show resolved
Hide resolved
src/main/resources/db/migration/V2__add_gpa_score_and_language_test_score.sql
Show resolved
Hide resolved
src/main/resources/db/migration/V2__add_gpa_score_and_language_test_score.sql
Show resolved
Hide resolved
src/main/resources/db/migration/V2__add_gpa_score_and_language_test_score.sql
Outdated
Show resolved
Hide resolved
위백님 flyway 에 대해 이런 의견도 있더라고요.. 정리하자면, 저는 물론 저 의견도 일리가 있지만 개발용 서버/DB 를 둬서 거기에 테스트하면 여기에 대해 위백님의 의견도 듣고 싶습니다. |
저도 확실히 이해한 것은 아니지만, V1__init.sql가 필요하지 않은 이유에 대해서 말해보자면, 즉 이미 만들어져 있는 상태의 디비를 버전1로 하고, 여기서 쌓아올라가는 방식으로 진행하는 것이니 이해하신게 맞습니다! 추가적으로 초기 DB상태를 형성관리에 추가하기 위해 현재 디비 상태의 DML을 따서 V1파일로 생성해주는 것이 좋을 것 같습니다. |
위 글에서는 Flyway를 사용하지 않고 DDL을 수동으로 실행해야 할 이유로 데이터가 DDL 자체에 문제가 있을경우 데이터가 유실되거나 장애가 발생할 수 있다는 이유를 드는데, 수동으로 마이그레이션을 한다해도 DDL 자체에 문제가 있을 경우에는 동일한 문제가 발생한다고 생각합니다. 수동으로 마이그레이션을 진행한다고 이를 막을 수 있다고 생각이 되지는 않고, 이를 방지하기 위해서는 stage 서버등에서 미리 테스트를 해보는 것이 필요할 것 같습니다. 배포시 DB 마이그레이션 문제 발생시에도 영향을 최소화 하려면 backward compatibility를 유지하면서 스키마를 변경하거나, 무중단 배포를 진행할 때 오류가 발생하면 인스턴스 전환을 취소하는 안정장치를 추가하는게 좋을 것 같습니다.
말씀하신대로 마이그레이션시 운영 서버에 바로 수동으로 DDL/DML을 적용하는 것보다 개발용 DB에 먼저 테스트를 해보는 것이 오류를 줄이는데 더 도움이 될 것 같습니다. 또한 저희는 성능 문제로 인해서 마이그레이션을 조정해서 실행해야 할 일도 없을 것 같습니다. |
좋은 것 같습니다. 다만 배포 컨피그에는 마이그레이션 실패시(배포 실패시) 롤백하는 과정을 cd에 넣은 후에 적용하는 것이 좋을 것 같습니다. |
동의합니다!
동의합니다🙆🏻♀️ |
늦어서 죄송합니다. Flyway에서는 baseline 버전 이하의 버전은 "이미 적용 된 것"으로 간주하고 무시하는 것으로 알고 있습니다. 즉 현재 상황에서 prod에 baseline을 V1로 설정하고(기본값) V2파일을 적용시킨다면, 이후 V1파일이 추가되더라도 baseline 버전 이하의 버전이기에 무시됩니다. 즉 prod에서는 문제가 없습니다. 즉 V1.1을 굳이 추가할 필요 없이, V1__init.sql 파일을 추가하면 될 것 같습니다. V1__init.sql은 production 환경에서는 쓰이지 않고, 이후 dev 환경을 Flyway로 관리할 때를 대비한 파일인 것이죠. create if not exists로 생성하는 것은 아주 좋은 아이디어 인것 같습니다. 참고해서 화요일까지 ddl 올려놓겠습니다. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
늦게 approve 드려 죄송합니다😭
관련 이슈
작업 내용
production 디비 변경사항을 관리하고, 마이그레이션을 용이하게 하기 위하여 flyway를 도입하고자 합니다.
flyway 라이브러리를 추가하고, 이번에 추가/수정되어야 할 사항들을
V2__add_gpa_score_and_language_test_score.sql
로 추가해두었습니다.V2 마이그레이션 파일에는 #109 추가 기능을 위한 테이블/필드 뿐만 아니라 기존에 반영이 안되있었던 FK 도 포함되어 있습니다.
참고자료:
https://documentation.red-gate.com/fd/baseline-on-migrate-224919695.html
https://engineerinsight.tistory.com/206
특이 사항
22일 일요일 안으로 마이그레이션 테스트 후 결과 공유하겠습니다.
리뷰 요구사항 (선택)