[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.ymlexternal블록 정리: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_KEY와EXTERNAL_*_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 검증(실패 방지 케이스).