Проблема
В вашей организации есть много отдельных приложений, некоторые из которых взаимодействуют друг с другом (для создания "систем" ). Вам необходимо развернуть эти приложения в отдельных средах для облегчения ступенчатого тестирования (например, DEV, QA, UAT, PROD). В каждом окружении (например, в каждой среде есть отдельная база данных) необходимо настроить несколько приложений по-разному. Вы хотите, чтобы эта переконфигурация обрабатывалась каким-то автоматическим механизмом, чтобы менеджерам выпуска не приходилось вручную настраивать каждое приложение каждый раз, когда оно развертывается в другую среду.
Требуемые функции
Я хотел бы создать решение для всей организации со следующими свойствами (в идеале):
- Поддерживает развертывание "одним нажатием" (необходимо указать только среду, и никакая ручная перенастройка во время/после развертывания не потребуется).
- Должна быть единственная "система записи", в которой указано общее свойство, зависящее от среды (например, строка подключения к базе данных, которая используется многими приложениями).
- Поддерживает повторную настройку развернутых приложений (в случае необходимости изменения свойства среды), в идеале без необходимости повторного развертывания приложения.
- Позволяет запускать приложение на одном компьютере, но в разных средах (одновременно запускать экземпляр PROD и экземпляр DEV).
Возможные решения
Я вижу два основных направления, в которых может идти решение:
- Сделать все приложения "осведомленными об окружающей среде". Вы должны передать имя среды (DEV, QA и т.д.) В командной строке приложения, а затем приложение будет "умным", чтобы определить значения конфигурации для конкретной среды во время выполнения. Приложение может извлекать значения из плоских файлов, развернутых вместе с приложением, или из центральной службы конфигурации.
- Приложения не являются "умными", поскольку они находятся в №1, и просто получают конфигурацию по имени свойства из файлов конфигурации, развернутых в приложении. Значения этих свойств вводятся в конфигурационные файлы во время развертывания программой установки / script. Эта установка script принимает имя среды и извлекает все соответствующие значения конфигурации из центральной службы конфигурации.
Вопрос
Как было бы/вы получили решение по конфигурации, которое решает эти проблемы и поддерживает эти желаемые функции? Имею ли я цель с двумя возможными решениями? Есть ли у вас предпочтение между этими решениями? Также, пожалуйста, не стесняйтесь сказать мне, что я думаю о проблеме, все неправильно. Любая обратная связь будет с благодарностью.