앱의 YAML, 위에 env var
현대 service 가 보통 config 를 layer: YAML 파일이 기본값 보유, 환경 변수가 배포별 override, runtime 인자가 호출별 override. 패턴: YAML 을 강타입 config 객체로 파싱 후 env var 가 이름으로 필드 패치하게.
Pydantic Settings (Python)
Pydantic V2 가 pydantic_settings 출시: BaseSettings subclass 정의, YAML 파일 (custom source 통해) 가리키면, env var 가 자동으로 필드 override. parse-time 타입 에러가 배포 전 오타 잡음.
'설정당 한 타입' 원칙
타입 미리 정의: port: int = 8000, log_level: Literal["debug","info","warn","error"] = "info". 파서가 안 맞는 값 거부. JSON Schema 와 같은 아이디어, 언어 타입 시스템에서.
원칙: raw YAML 을 dict 로 읽고 string key 로 들어가지 마 (
config["server"]["port"]). 잘못된 key, 누락된 key, 잘못된 타입 — 다 silent runtime crash. 강타입 config 객체가 그걸 parse-time 에러로 변환.