-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
Description
변경 유형 (Type): FIX
제목(Subject): 배포환경에서 Initdata 관련버그 수정
무엇을 / 왜
무엇(What):
- V2 마이그레이션 파일 추가 (V2__init_prod_essential.sql)
프로덕션 환경용 필수 초기 데이터 생성 SQL 파일 추가
Admin 계정만 생성 (테스트 데이터 제외)
ON CONFLICT DO NOTHING 구문으로 멱등성 보장 - 테스트 프로파일 설정 수정 (application-test.yml)
jpa.hibernate.ddl-auto: create-drop 설정 추가
테스트 실행 시마다 DB 스키마 초기화 및 종료 시 삭제
왜(Why): - V2 마이그레이션 파일 추가 이유
InitData가 스프링 재시작 시마다 실행되어 중복 데이터 생성 및 불필요한 GEMINI API 호출 발생 (429 에러)
Blue-Green 배포 시에도 InitData 재실행으로 인한 리소스 낭비 방지
프로덕션 환경에서는 Flyway 마이그레이션으로 1회성 데이터 초기화를 보장
InitData는 @Profile("!prod")로 프로덕션에서 비활성화되어 있지만, dev 환경 재시작 시에도 문제 발생 방지 - 테스트 프로파일 설정 수정 이유
기존 ddl-auto: update 설정으로 인해 이전 테스트 데이터가 H2 메모리에 남아있음
InitData가 DecisionLine에 대한 Scenario를 중복 생성하려 시도하여 unique constraint 위반
create-drop으로 변경하여 각 테스트 실행마다 깨끗한 DB 환경 보장
어떻게(요약) — 3줄 이내
- 프로덕션 환경: Flyway 마이그레이션(V2__init_prod_essential.sql)으로 멱등성을 보장하며 1회성 필수 데이터 초기화
- 개발/테스트 환경: InitData(@Profile("!prod"))로 풍부한 시드 데이터 제공하되, 재실행 시 멱등성 체크로 중복 방지
- 테스트 격리: ddl-auto: create-drop으로 각 테스트마다 DB 초기화하여 데이터 충돌 및 unique constraint 위반 방지
영향 범위
- API 변경
- DB 마이그레이션
- Breaking Change
- 보안/권한 영향
- 문서/가이드 업데이트 필요
체크리스트
- 타입 라벨 부착 (FEAT/FIX/REFACTOR/COMMENT/STYLE/TEST/CHORE/INIT)
- 로컬/CI 테스트 통과
- 영향도 점검 완료
- 주석/문서 반영(필요 시)
ToDo (선택)
- 할 일 1
- 할 일 2
스크린샷/증빙(선택)
Auto-created for PR #71