Hydra 설정 구성(Composition) — defaults로 조립하기
Hydra 설정 구성(Composition) — defaults로 조립하기
한 파일에 모든 설정을 두면 파일이 금방 비대해져요. Hydra는 **구성(composition)**이라는 방식으로 이걸 해결해요. defaults라는 특별한 지시어에 설정 그룹을 나열하면, Hydra가 그 파일들을 조합해 하나의 계층적 설정 객체를 만들어줘요. DB는 MySQL, 로거는 특정 방식 같은 "부분 설정"을 따로 관리하고 골라 쓰는 구조예요.
출처: https://hydra.cc/docs/tutorials/basic/your_first_app/composition/
defaults란
defaults는 "이 설정 조각들을 사용해"라고 Hydra에게 알려주는 특별한 목록이에요. 예를 들어 DB를 db/mysql.yaml에서 가져오고 싶다면 이렇게 써요.
# conf/config.yaml
defaults:
- db: mysql
그리고 conf/db/mysql.yaml에 그 설정 조각을 넣어요.
# conf/db/mysql.yaml
driver: mysql
user: omry
pass: secret
결과 cfg 객체는 defaults의 설정들과 config.yaml 자체의 설정이 합쳐진(composed) 값이에요. cfg.db.driver로 접근하면 mysql이 나와요.
설정 그룹과 선택
db처럼 여러 선택지(파일)를 가진 카테고리를 **설정 그룹(config group)**이라고 불러요. conf/db/ 아래에 mysql.yaml, postgres.yaml을 두면, defaults의 db: mysql을 db: postgres로 바꾸는 것만으로 DB 종류를 스위칭할 수 있어요.
defaults:
- db: postgres
defaults와 기본 설정의 충돌
defaults에서 가져온 값과 config.yaml에 직접 쓴 값이 같은 키를 다루면, 일반적으로 config.yaml의 값이 우선해요. 필요하면 override 문법으로 우선순위를 세밀하게 조정할 수도 있어요.
더 알아보기
defaults의 우선순위 규칙과 고급 사용법은 공식 Defaults 문서에서 다룹니다.