[BE-05] env 전환 스위치 정합 · 전환 runbook 문서화

작업 내용 (설계 의도)

근거 TDD: ../TDD.md “AS-IS env 스위치”, “Release Scenario”, ADR-001.

변경 사항

mock↔실연동 전환이 코드 무변경으로 일관되게 동작하도록 env 스위치 설정을 정합하고, 전환 절차를 문서화한다. BE-01과 파일 교집합이 없어 wave 1 병렬.

  • backend/src/main/resources/application.yml external 블록 정리: public-facility.api-key(기본 mock-service-key)와 weather.api-key(기본 빈값)의 비대칭 해소 — 두 블록이 동일 ${DATA_GO_KR_SERVICE_KEY} 규약을 공유하되 기본값 규약을 통일(FR-3 동시 전환의 일관성).
  • GeocodingProperties.kt·PublicFacilityProperties.kt·WeatherProperties.kt 기본값을 yml 규약과 일치시켜 정합.
  • .env.sample(레포 루트) 추가 — KAKAO_REST_API_KEY, DATA_GO_KR_SERVICE_KEY, SOLAPI_API_KEYEXTERNAL_*_BASE_URL 전환 대상 env를 키 값 없이 placeholder로 나열(실제 키는 .zshrc 주입, PRD NFR: 평문 노출 0).
  • mock-servers/README.md 전환표에 발급 주체·전환 판정 링크(TDD) 1줄 보강.

env 우선(ConfigurationProperties)이므로 프로덕션 값 무영향 — 기본값 정합만. 롤백: env 제거 후 재기동으로 mock 복귀(피처 플래그 등가).

의존

  • 없음

다이어그램

처리 흐름

sequenceDiagram
    participant O as Operator
    participant E as env(.zshrc)
    participant A as App(재기동)
    participant G as GatewayImpl
    O->>E: DATA_GO_KR_SERVICE_KEY 주입 + EXTERNAL_*_BASE_URL 실 host
    O->>A: 롤링 재기동
    A->>G: Properties(baseUrl=실host, apiKey=실키)
    G->>G: 실 API host 조회
    Note over O,A: env 제거 후 재기동 → mock 복귀(롤백)

클래스 의존

flowchart LR
    YML["application.yml external"] --> GP["GeocodingProperties"]
    YML --> PFP["PublicFacilityProperties"]
    YML --> WP["WeatherProperties"]
    ENV[".env.sample"] -.문서.-> YML

테스트 케이스

  • env 부재 시 세 Properties의 base-url이 각각 mock host(9101/9102/9102)로 해석된다(해피).
  • DATA_GO_KR_SERVICE_KEY 주입 시 public-facility·weather 두 Properties의 api-key가 동일 값으로 채워진다(FR-3 동시 전환).
  • weather api-key 기본값 비대칭이 해소되어 public-facility와 동일 규약으로 해석된다(정합 확인).
  • .env.sample에 실제 키 값이 포함되지 않는다(placeholder만) — 평문 노출 0 검증(실패 방지 케이스).