Я согласен с качелями подходом более прокатный подход ты ищешь. Проблема заключается в том, что вы попадаете в ситуации, когда балансировка нагрузки может перемещать пользователей между различными версиями приложения во время перехода.
Решения, которые мы придумали (прежде чем находить SeeSaw, которые мы не используем), должны были взять половину ублюдков от линии балансировки нагрузки. Закройте их. Обновите их. Запустите их. Поместите этих mogrels обратно в онлайн в балансировщик нагрузки и возьмите другую половину. Закройте вторую половину. Обновите вторую половину. Запустите их. Это значительно сокращает время, когда у вас одновременно работают две разные версии приложения. Я написал файл bat bat для этого. (Развертывание на Windows не рекомендуется, кстати)
Очень важно отметить, что миграция базы данных может сделать весь подход немного опасным. Если у вас есть только аддитивные миграции, вы можете запустить их в любое время до развертывания. Если вы удаляете столбцы, вам нужно сделать это после развертывания. Если вы переименовываете столбцы, лучше разбить его на создание нового столбца и скопировать данные в него, чтобы выполнить миграцию до развертывания, и отдельный сценарий для удаления старого столбца после развертывания. На самом деле, может быть опасно использовать регулярные миграции в производственной базе данных в целом, если вы не предпринимаете особых усилий для их организации. Все это указывает на более частые поставки, поэтому каждое обновление имеет меньший риск и менее сложный, но это вопрос для другого ответа.
Спасибо, матовый, да, я не думал упоминать об этом, но я бы наверняка ошибался на безопасной стороне, и почти для любой миграции просто выполните более полное завершение работы-migrate-startup – 2008-09-25 05:07:14