Что такое переменные окружения и почему они важны?
Переменные окружения – это пары ключ-значение, которые используются во время выполнения программы. Это может быть строка подключения к базе данных или порты, используемые для прослушивания входящего трафика.
У каждого разработчика есть как минимум 2 среды. Среда разработки, где выполняется большая часть работы, и производственная среда, где пользователи взаимодействуют с вашим продуктом. В этих средах существует четкое разделение ресурсов.
Например, у вас есть база данных, настроенная локально для тестирования функциональности, и база данных в продакшене, содержащая пользовательские данные, которые мы не хотим отключать во время тестирования. В этом случае мы поддерживаем две переменные подключения, которые мы можем переключать в зависимости от среды, в которой мы работаем в данный момент.
Эти переменные обычно хранятся в отдельных файлах от исходного кода, чтобы вы могли вносить изменения в переменные, не затрагивая исходный код.
Каков обычный способ управления переменными окружения?
Одним из распространенных способов управления переменными окружения, принятых разработчиками, является использование отдельного файла, содержащего несколько пар ключ-значение, которые представляют переменные, используемые в приложении. Этот файл обычно не добавляется ни в одну систему контроля версий. Часто его добавляют вручную в каталог/сайт развертывания. Он также добавляется как скрытый файл в файловой системе (например, в Linux) с помощью префикса “.”.
Большинство проектов, использующих системы контроля версий, часто содержат образец файла переменных окружения, который обычно постфиксируется именем -example.format для информирования новых разработчиков о переменных окружения, необходимых для выполнения проекта, или существующих разработчиков о новых переменных, добавленных соавторами.
Обычно он записывается в форматах JSON, YAML или TEXT.
Недостатки традиционного способа
В ClickPesa мы поддерживаем несколько окружений, которые используются в нашем цикле разработки и выпуска. Каждая переменная среды содержит свой набор пар “ключ-значение”, которые диктуют поведение приложения (приложений).
Наш цикл выпуска содержит автоматизированные тесты, которые выполняются в процессе автоматизированной сборки и развертывания. Нам нужен был способ обращения к этим секретным парам “ключ-значение” в процессе тестирования так же, как это должно происходить в любой конкретной среде, когда пользователь взаимодействует с нашим приложением.
- Значит ли это, что нам нужно дублировать один и тот же файл и предоставлять его в качестве входных данных для процесса сборки-тестирования-развертывания?
- Как нам быть с изменениями в файле в процессе разработки?
Эти два вопроса можно решить с помощью внедрения централизованной области, где мы можем хранить наши переменные окружения и вызывать их из любого места. Будь то конвейер Bitbucket, Github Action, виртуальный частный сервер, функция Lambda и т. д.
Что такое Doppler
Doppler – это SaaS-платформа, которая упрощает управление переменными окружения с помощью интуитивно понятной приборной панели, мощного CLI и интеграций для синхронизации секретов между средами разработки, облачными провайдерами, хостинговыми платформами, инструментами CI/CD, Docker, Kubernetes и Terraform.
Doppler решает нашу потребность в централизации и версионировании переменных окружения для всех приложений с помощью совместимых инструментов.
Мы используем его для настройки переменных окружения для определенных мест в файловой системе, где наши приложения размещены внутри VPC. Это означает, что мы можем поддерживать различные версии одного и того же приложения в зависимости от контекста среды.
Эти переменные можно обновлять с помощью сценариев, определенных в процессе сборки-тестирования-развертывания.
Заключение
Для получения дополнительной информации воспользуйтесь следующей ссылкой для получения практического руководства по использованию doppler в вашей текущей рабочей среде.