The Twelve-Factor App
Конфигурация приложения – это всё, что может меняться между развёртываниями (среда разработки, промежуточное и рабочее развёртывание). Это включает в себя:
- Идентификаторы подключения к ресурсам типа базы данных, кэш-памяти и другим сторонним службам
- Регистрационные данные для подключения к внешним сервисам, например, к Amazon S3 или Twitter
- Значения зависимые от среды развёртывания такие, как каноническое имя хоста
Иногда приложения хранят конфигурации как константы в коде. Это нарушение методологии двенадцати факторов, которая требует строгого разделения конфигурации и кода. Конфигурация может существенно различаться между развёртываниями, код не должен различаться.
Лакмусовой бумажкой того, правильно ли разделены конфигурация и код приложения, является факт того, что кодовая база приложения может быть в любой момент открыта в свободный доступ без компрометации каких-либо приватных данных.
Обратите внимание, что это определение “конфигурации” не включает внутренние конфигурации приложения, например такие как ‘config/routes.rb’ в Rails, или того как основные модули будут связаны в Spring. Этот тип конфигурации не меняется между развёртываниями и поэтому лучше всего держать его в коде.
Другим подходом к конфигурации является использование конфигурационных файлов, которые не сохраняются в систему контроля версия, например ‘config/database.yml’ в Rails. Это огромное улучшение перед использованием констант, которые сохраняются в коде, но по-прежнему и у этого метода есть недостатки: легко по ошибке сохранить конфигурационный файл в репозиторий; существует тенденция когда конфигурационные файлы разбросаны в разных местах и в разных форматах, из за этого становится трудно просматривать и управлять всеми настройками в одном месте. Кроме того форматы этих файлов, как правило, специфичны для конкретного языка или фреймворка.
Приложение двенадцати факторов хранит конфигурацию в переменных окружения (часто сокращается до env vars или env). Переменные окружения легко изменить между развёртываниями, не изменяя код; в отличие от файлов конфигурации, менее вероятно случайно сохранить их в репозиторий кода; и в отличие от пользовательских конфигурационных файлов или других механизмов конфигурации, таких как Java System Properties, они являются независимым от языка и операционной системы стандартом.
Другим подходом к управлению конфигурациями является группировка. Иногда приложения группируют конфигурации в именованные группы (часто называемые “окружениями”) названые по названию конкретного развёртывания, например как development , test и production окружения в Rails. Этот метод не является достаточно масштабируемым: чем больше различных развёртываний приложения создаётся, тем больше новых имён окружений необходимо, например staging и qa . При дальнейшем росте проекта, разработчики могут добавлять свои собственные специальные окружения, такие как joes-staging , в результате происходит комбинаторный взрыв конфигураций, который делает управление развёртываниями приложения очень хрупким.
В приложении двенадцати факторов переменные окружения являются не связанными между собой средствами управления, где каждая переменная окружения полностью независима от других. Они никогда не группируются вместе в “окружения”, а вместо этого управляются независимо для каждого развёртывания. Эта модель которая масштабируется постепенно вместе с естественным появлением большего количества развёртываний приложения за время его жизни.
Что значит конфигурация?
В этой статье разберем, что представляет из себя конфигурация в области программирования и какие свойства она имеет.
Время чтения — 2 минуты
Поделитесь статьей в социальных сетях
Что значит конфигурация?
Конфигурация – это совокупность настроек программы, заданная пользователем изначально, а также изменение настроек определенной программы, которое нужно реализовать под нужды пользователя.
Зачем нужна конфигурация?
Скорее всего профессиональным специалистам в айти-сфере данный вопрос покажется достаточно странным, но новичкам это будет полезно знать.
Конфигурация нужна для удовлетворения всех нужд пользователей, а также конфигурация позволяет сделать так, чтобы большинству пользователей не приходилось заморачиваться с дополнительными настройками программы.
Какие есть отличительные особенности?
Любая конфигурация имеет определенную версию, одним из отличительных особенностей является то, что она достаточно часто обновляется.
Если вы работаете в 1С и у вас есть несколько предприятий, то вам обязательно нужно следить за обновлениями и своевременно их обновлять. Особенность заключается в том, что данные обновления устанавливаются как бы друг за другом, и допустим последние версии содержат только изменения, а не первоначальный вид. Обновление занимает достаточно много времени, поэтому стоит уделять этому особое внимание.
В настоящее время конфигурации с нуля уже никто не пишет. Вместо этого разработчики используют типовую конфигурацию фирмы 1С и уже её усиленно дорабатывают, делают функционал более приспособленным под нынешнее время и условия.
Когда появились графические оболочки систем, то соответственно программирование стало развиваться немного в другом направлении. Конечно, добавились какие-то новые изменения, возможности и даже появилось объектно-ориентированное программирование.
При подготовке материала использовались источники:
https://12factor.net/ru/config
https://pro-dgtl.ru/blog/chto-znachit-konfiguraciya