1.5 KiB
1.5 KiB
KBX Configuration Governance v22
목적
설정도 코드와 동일한 계약으로 취급한다. 개발자의 로컬 설정이 운영 의미를 결정하거나, 운영 Secret이 Repository에 들어가거나, 동일 Release가 환경별로 다른 방식으로 빌드되는 상태를 방지한다.
경계
- Static configuration: DB 연결, Hangfire/SignalR 사용여부, Provider credential reference, Observability endpoint, 업로드 한도처럼 배포/프로세스 생명주기에 속하는 값.
- Dynamic runtime state: Experiment rollout/kill switch, Runtime incident/read-only 상태처럼 이미 DB 기반 관리 계약이 있는 값. 이 값을 다시 appsettings로 복제하지 않는다.
- Domain rule: 재고부족, 출고 가능 상태, 가격/수량 규칙. Configuration으로 우회하지 않는다.
Source precedence
defaults → appsettings → environment-specific appsettings → environment → secret-store → command-line
Secret은 환경변수/User Secrets/Secret Store 경로만 허용한다. Repository 예제에는 실제 값을 넣지 않는다.
Fail fast
KbxConfigurationStartupValidator는 첫 업무 요청 전에 Required/Conditional Required/Enum/Integer Range/URI/Production Safety를 검증한다. 오류 메시지에는 Secret 값을 출력하지 않는다.
Configuration fingerprint
운영 재현용 fingerprint는 non-secret 설정만 canonical order로 SHA-256 한다. 이 값은 배포/로그에 남길 수 있지만 Secret fingerprint나 Secret value를 포함하지 않는다.