-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Description
리팩토링 대상
- 코드 가독성 및 아키텍처 개선: DB 스키마 정의를 자바 코드(DataInitializer)에서 분리하여 표준 SQL 파일로 관리합니다.
- 성능 최적화: 서버 기동 시마다 매번 실행되는 Repository 조회 및 삽입 로직을 제거하고 Flyway의 스키마 버전 체크 방식으로 대체합니다.
- 중복 코드 제거: initTripThemes, initEmotions 등 반복적인 초기화 로직을 제거합니다.
- 안정성 확보: 운영 환경(prod 프로필)에서 JPA가 스키마를 임의로 수정하는 것을 방지합니다.
리팩토링 목적
- 현재 ddl-auto: update 설정과 DataInitializer 클래스를 통한 자바 코드 기반의 DB 초기화 방식은 운영 환경(Production)에서 데이터 유실 위험이 크고 변경 이력 관리가 불가능합니다. 앱스토어 출시 및 RDS 이전을 대비하여 SQL 기반의 마이그레이션 도구인 Flyway를 도입하고 DB 관리 프로세스를 표준화합니다.
TODO
- 의존성 추가: build.gradle에 flyway-core 및 flyway-mysql 라이브러리 추가.
- 설정 변경:
application.yml의 ddl-auto를 validate로 변경.
application-prod.yml에 Flyway 활성화 및 baseline-on-migrate: true 설정 추가. - V1 마이그레이션 스크립트 작성:
현재 MySQL의 테이블 생성문(DDL)을 V1__init.sql로 추출.
DataInitializer에 정의된 기초 데이터(테마, 감정, 날씨 등)를 INSERT 문으로 변환하여 포함. - 기존 초기화 로직 제거: zim.tave.memory.init.DataInitializer 클래스 삭제 또는 @component 제거.
- 테스트: 로컬 환경에서 Flyway를 통한 DB 구축 및 데이터 정상 삽입 여부 검증.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels