Как настроить развертывание в Azure так, чтобы они использовали разные базы данных в зависимости от среды?

Вы можете легко обменять два развертывания между промежуточной и производственной средой на портале управления Azure путем замены своего VIP. При работе с промежуточной версией служб мы также хотим использовать промежуточную базу данных, поэтому мы не рискуем собирать фактические данные о клиентах. Тем не менее, после обмена промежуточными и производственными услугами развертывание в настоящее время (и ранее промежуточное) должно, очевидно, работать над производственной базой данных.

Таким образом, база данных для использования будет зависеть от того, работает ли экземпляр в среде Staging или Production. Есть ли хороший способ достичь этого? Я полагаю, полагаясь на VIP и жесткое кодирование, переключение базы данных на основе этого, вероятно, не самая лучшая идея.

Ответ 1

Моя рекомендация состояла бы в том, чтобы прекратить использование "промежуточного слота" службы для функции, в которой вы использовали традиционную "промежуточную среду". Когда я говорю с людьми о Windows Azure, я настоятельно рекомендую, чтобы они использовали начальные слоты только для smoke test нового развертывания до его выхода в эфир. Если они хотят провести более длительное тестирование, то многие из нас привыкли к работе на месте, а затем используют отдельную услугу и, возможно, даже отдельную подписку (более поздняя версия, если вы хотите прозрачность затрат).

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

Однако, как я изложил в первом абзаце, я думаю, что есть лучший способ сделать что-то.:)

Ответ 2

В недавнем выпуске веб-сайтов Azure история здесь изменилась. Теперь вы можете указать, что любой параметр приложения или строка подключения является "установкой слота", привязывая его к определенному слоту. Чтобы решить вашу проблему, вы просто установите строку подключения в каждом слоте и позаботитесь об установке "Настройки слота".

Я менее понятен, если сейчас это целесообразный подход. Миграция и откат схемы базы данных не запекаются, и я не уверен, как правильно ее обрабатывать. Кроме того, работают только настройки приложения и строки подключения, поэтому, например, настройки system.net.mail не могут быть привязаны к слоту. Для этого вам нужно будет изменить код, чтобы получать информацию о почтовом сервере и т.д. Из настроек приложения, а также использовать другой подход.

Ответ 3

Re: "При работе над промежуточной версией служб мы также хотим использовать промежуточную базу данных, поэтому мы не рискуем собирать фактические данные о клиентах". Существует не встроенный способ сделать это.

Если вы хотите протестировать без риска для производственных данных, подумайте об этом тестировании в другой учетной записи Azure - той, которая даже не имеет доступа к производственной базе данных. Затем, когда вы считаете, что система протестирована и готова к работе в прямом эфире, только затем выведите ее в промежуточный сегмент рядом с экземпляром вашего производства для окончательного smoke test.

Я могу представить сценарии, в которых вы также захотите запустить несколько сценариев на промежуточном экземпляре перед тем, как сделать VIP Swap, но не хотите загрязнять производственные данные. Для этого многие компании используют специальные учетные записи - данные, связанные с этими учетными записями, известны (или помечены как-то), чтобы быть не от реальных клиентов, поэтому их можно пропустить в отчетности и биллинге и т.д.

Re: "Опираясь на VIP и жестко кодируя переключение базы данных на основе этого, вероятно, не самая лучшая идея, я думаю". Если по жесткому кодированию вы подразумеваете чтение его из файла конфигурации, это, вероятно, не плохая идея, если вы используете подход, упомянутый выше. Я слышал о том, что некоторые люди собираются "выяснить, находимся ли мы в промежуточном слоте и делаем что-то другое в коде", но я скорее рекомендую то, что я описал выше.