Как управлять постепенным развертыванием веб-приложения - PullRequest
3 голосов
/ 10 февраля 2011

Я занимаюсь разработкой веб-приложения и хочу иметь возможность пошатнуть развертывание новых сборок и версий среди наших пользователей.Например ...

  • Разверните новую версию приложения и перенесите в нее несколько тестовых учетных записей для тестирования
  • Когда тестирование будет успешным, переведите 5% клиентов в новуюпроблемы поддержки версий и мониторинга, а также проблемы с нагрузкой на сервер у этих клиентов.
  • если все еще в порядке, постепенно переходите на новую версию все больше и больше клиентов, пока все не будут обновлены.

Fogbugz и Kiln из FogCreek используя систему развертывания, как это.Вы можете прочитать об этом здесь ...

Проблема, которую я сейчас пытаюсь решить, заключается в , что разные учетные записи в системе могут использовать разные версии кода .

Что является хорошим способом управления и контроля?Может ли Apache выполнить некоторые тяжелые работы здесь?Я хочу избежать чрезмерных накладных расходов или использования странных скриптов загрузчика, чтобы определить, куда отправить запрос.Как веб-приложения, такие как Fogbugz on Demand, справляются с этой проблемой?Существует ли признанный шаблон проектирования для этого?

Пользователи идентифицируются по имени домена (например, user1.example.com, user-bob.example.com и т. Д.).

1 Ответ

3 голосов
/ 11 февраля 2011

Есть сотни способов сделать это;поэтому давайте подумаем на высоком уровне, не говоря об особенностях архитектуры:

  • Крупные общедоступные сайты, такие как Yahoo и MSN, обрабатывают изменения в дизайне со случайными выборками и устанавливают куки-файлы с длительными тайм-аутами, чтобы определить, кто должен получать новыеdesign.
  • Для платных обновлений и бета-приглашений вы должны быть в состоянии определить и пометить, какие учетные записи клиентов получат новый «дизайн» или набор функций при входе в систему.Например, новые обновления для Digg v4 были предназначены только для зарегистрированных пользователей.У Facebook была аналогичная система развертывания в их системе с новыми страницами профиля.
  • Вы можете решить заплатить за бета-тестеров.Вы можете легко использовать Amazon Mechanical Turk или такие сайты, как custfeedback.com

Все зависит от вас и вашей архитектуры.Надеюсь, вы написали свое программное обеспечение с учетом этой функциональности;и, надеюсь, вы предоставили простые способы легко обновлять приложения и базы данных во время развертывания.Magento (платформа электронной коммерции с открытым исходным кодом) справляется с этим очень хорошо.Каждый модуль построен в виде плагина, и каждый из его компонентов ведет учет своей версии.Обновления базы данных выполняются на лету с помощью сценариев установки и обновления на основе новой / будущей версии, сохраненной в файлах конфигурации.

Вы можете переместить бета-тестеров в новый домен или базу данных, в которой ведется более подробное ведение журналов и анализ в реальном времени, чем на вашем рабочем компьютере.Это был метод, упомянутый в сообщении в блоге Kiln - они ссылались на сайт http://martinfowler.com/bliki/BlueGreenDeployment.html - в конце концов, как бы вы ни разделяли свои учетные записи и трафик, вам в конечном итоге придется консолидировать.Скорее всего, вам потребуется выполнить миграцию в окне обслуживания и заставить всех перейти на одну и ту же версию.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...