Skip to content

[FIX]: 배포환경에서 Initdata 관련버그 수정 #72

@lcs9317

Description

@lcs9317

변경 유형 (Type): FIX
제목(Subject): 배포환경에서 Initdata 관련버그 수정

무엇을 / 왜

무엇(What):

  1. V2 마이그레이션 파일 추가 (V2__init_prod_essential.sql)
    프로덕션 환경용 필수 초기 데이터 생성 SQL 파일 추가
    Admin 계정만 생성 (테스트 데이터 제외)
    ON CONFLICT DO NOTHING 구문으로 멱등성 보장
  2. 테스트 프로파일 설정 수정 (application-test.yml)
    jpa.hibernate.ddl-auto: create-drop 설정 추가
    테스트 실행 시마다 DB 스키마 초기화 및 종료 시 삭제
    왜(Why):
  3. V2 마이그레이션 파일 추가 이유
    InitData가 스프링 재시작 시마다 실행되어 중복 데이터 생성 및 불필요한 GEMINI API 호출 발생 (429 에러)
    Blue-Green 배포 시에도 InitData 재실행으로 인한 리소스 낭비 방지
    프로덕션 환경에서는 Flyway 마이그레이션으로 1회성 데이터 초기화를 보장
    InitData는 @Profile("!prod")로 프로덕션에서 비활성화되어 있지만, dev 환경 재시작 시에도 문제 발생 방지
  4. 테스트 프로파일 설정 수정 이유
    기존 ddl-auto: update 설정으로 인해 이전 테스트 데이터가 H2 메모리에 남아있음
    InitData가 DecisionLine에 대한 Scenario를 중복 생성하려 시도하여 unique constraint 위반
    create-drop으로 변경하여 각 테스트 실행마다 깨끗한 DB 환경 보장

어떻게(요약) — 3줄 이내

  1. 프로덕션 환경: Flyway 마이그레이션(V2__init_prod_essential.sql)으로 멱등성을 보장하며 1회성 필수 데이터 초기화
  2. 개발/테스트 환경: InitData(@Profile("!prod"))로 풍부한 시드 데이터 제공하되, 재실행 시 멱등성 체크로 중복 방지
  3. 테스트 격리: 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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions