Skip to content

[Feat&Mod] flyway 세팅 및 docker-compose 파일 수정 #122

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

Merged
merged 2 commits into from
Feb 28, 2025

Conversation

jjjh02
Copy link
Contributor

@jjjh02 jjjh02 commented Feb 27, 2025

추가한 코드

  • build.gradle - implementation 'org.flywaydb:flyway-mysql' 추가
  • V1__init.sql - 기존에 JPA를 사용하여 엔티티가 자동으로 데이터베이스에 생성되었던 부분을 SQL 스크립트를 직접 작성하여 테이블을 생성
  • docker-compose.yml - mysql-container와의 연결 부분 삭제

flyway

db 마이그레이션 툴 사용 계기

  • 데이터베이스 변경을 체계적으로 관리하고, 안정성을 유지하면서 운영 환경에 반영

flyway 채택 이유

  • 스프링부트가 지원하는 마이그레이션 툴 : (대표적) flyway + liquibase
  • 주로 SQL을 사용할 것 같아, JSON, YAML 등을 제공하는 추상화를 누릴 수 있는 Liquibase가 매력적이지 않음
  • Flyway가 공식 문서가 좀 더 상세히 작성 + 레퍼런스가 더 많음

flyway 역할

  • 데이터베이스 버전 관리
  • 자동 마이그레이션 수행
  • 여러 환경(로컬, 개발, 운영)에서 동일한 스키마 유지

flyway 동작 방식

  1. flyway_schema_history 테이블 생성 - 마이그레이션 이력 저장
  2. SQL 마이그레이션 파일 실행
  3. 실행된 마이그레이션은 flyway_schema_history에 기록
  4. 새로운 SQL 스크립트가 추가되면 이전 기록과 비교하여 적용되지 않은 것만 실행
    (마이그레이션 파일은 DB 변경이 필요할 때마다 개발자가 직접 SQL 파일을 작성)

간단히 요약하자면, sql 마이그레이션 파일로 db를 형상 관리하고 spring.jpa.hibernate.ddl-auto=validate 옵션을 활용한 검증을 하도록 설정하였습니다.

@jjjh02 jjjh02 linked an issue Feb 27, 2025 that may be closed by this pull request
@JunbeomKoreaUniv
Copy link
Contributor

수고하셨습니다 👏 운영서버에 잘 반영되는지 테스트 해보시고 잘 반영되면 코멘트 달아주세요~!

@JunbeomKoreaUniv JunbeomKoreaUniv merged commit 329fdb3 into main Feb 28, 2025
1 of 2 checks passed
@jjjh02 jjjh02 deleted the database/flyway branch March 14, 2025 06:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

도커 컨테이너에서 RDS로 DB 이동
2 participants