Pull to refresh

Comments 10

Я видел данные подходы, такое же есть и в https://github.com/ilyakaznacheev/cleanenv. Вся проблема этих подходов в том, что если завтра у команды DevOps поменяются правила на названия переменных среды, то меня обязывают идти и исправлять это внутри кода. А это уже процесс проверки/отладки приложения.

Основная задача, которая я поставил - это развязать зависимости кода и конфигурации. И мое расширение это решает, при этом встраиваясь в любые решения работы с конфигурацией

Переменные среды для микросервиса обычно определяются разработчиком в deployment.yaml/statefulset.yaml/...

Каким боком здесь devops?

Обратите внимание на мое изложение.

Переменные, которые определяются разработчиком НЕ РАВНО название переменных среды. Вы, как разработчик, определяете левую часть, а правая не должна вас касаться (пример: host: ${SERVER_HOST}) по всем принципам разработки. Если вы работаете в крупном проекте, то у вас и доступа нет до того же прода. Вы просто пилите свою часть и все. А название переменной SERVER_HOST вообще может меняться в рамках деплоймента как угодно (не только значение, но и название) Например, поменялись стандарны названия переменных и т.д. То, что вы пытаетесь доказать - это путь к тому, что нужно будет условно лет через 5 брать и пересобирать и затем проверять приложение. Надеюсь, объяснил понятным языком.

Если это среда k8s, то, как правило, разработчик сам определяет имена переменных для своего сервиса. Не могу представить, зачем делать иначе. К чему вся эта ненужная гибкость? Только все усложняет

если завтра у команды DevOps поменяются правила на названия переменных среды

Это уже не DevOps, а старый-добрый (не очень) Operations, если кто-то решает за разработчиков как им называть переменные окружения для конфигурирования их же приложения ;)

Вы исказили мое сообщение. Разработчикам никто не запрещает как угодно называть переменные окружения. Но разработчики не должны накладывать ограничения и правила название переменных окружения командам деплоя/поставки и т.д.
Мы уходим в другую степь диалога и контекст стал теряться.

Причем вы процитировали мое сообщение и совершенно отдельно стоящую мысль транслировали (даже популистскую больше, а не смысловую)

Можно же просто обойти все настройки в конфиге viper и строковые значения пропустить через os.ExpandEnv (https://pkg.go.dev/os#ExpandEnv) без велосипедов и рефлексии

Sign up to leave a comment.

Articles