Как вы (ваша компания) управляете конфигурационными файлами приложений/систем, которые вы создаете? Позвольте мне рассказать вам, как мы это делаем, и в чем проблема.
Я работаю в компании, где мы разрабатываем программное обеспечение с примерно 15 разработчиками. Мы создаем веб-приложения на основе бизнес-приложений, которые развертываются на нашем управляемом хостинг-провайдере. Одно из наших основных приложений состоит из одного веб-сайта и около десяти служб WCF. Некоторые из услуг связаны друг с другом.
Я не знаю, является ли это большой системой или маленькой, но, по моему мнению, это слишком долго, чтобы все в порядке и в разных средах (тестирование, принятие и производство).
У нас есть конфигурационные файлы для среды в наших проектах Visual Studio. Итак, для <развития > развития web.test.config
, a web.acc.config
, a web.prod.config
и a web.config
. Все они имеют одинаковые ключи, но значения могут быть разными, в зависимости от среды, для которой они предназначены.
Если я быстро подсчитаю настройки app в web.config для webapp, я считаю 32. И я считаю 5 конечных точек. У нас есть четыре среды (dev, test, acc и prod), это означает 128 приложений и 20 конечных точек в общей сложности для одного веб-приложения. Мы можем легко ошибаться, особенно когда заканчиваются сроки. Мы все люди, поэтому такие вещи случаются со всеми: мы вносим изменения в конфигурационный файл, но забываем проверить, прежде чем строить и развертывать. Или мы вносим изменения на веб-сервер и забываем изменить его также в четырех файлах web.configs. Или мы изменим только три из четырех файлов конфигурации. И так далее. И тогда у нас есть инфраструктура нашего управляемого хостинг-провайдера. По умолчанию каждый порт закрыт. Поэтому, если одному из служб WCF необходимо поговорить с другой службой WCF на другом сервере, порт должен быть открыт в брандмауэре. Мы делаем это в Test, но в Acceptance мы должны сделать это снова, и мы забыли, какие порты должны быть открыты, поэтому это больше похоже на пробную ошибку: oh моя служба не может подключиться к базе данных, возможно, порт закрыт. И то же самое происходит в производстве снова. В соответствии с SLA наш управляемый хостинг-провайдер может занять несколько дней, чтобы открыть порт в брандмауэре. Таким образом, thuis быстро становится довольно долгим процессом. И в итоге нам понадобится около двух месяцев, чтобы запустить и запустить Test, Acceptance и production.
Итак, мой вопрос: как вы управляете конфигурациями и инфраструктурой и процессом вокруг нее?