У меня сделано так: есть интерфейс, который отдает конфиг, сама реализация может читать из env, из файла (yaml, json, toml), или откуда угодно. По сигналу можно прорелоадить, вызываются хуки с Before и After, если например изменились данные для СУБД в конфиге, то запускается хендлер который атомарно подменяет коннект СУБД, а старый закрывает, если конечно данные сменились. А обычные поля просто заменяются.