Как сделать непрерывную интеграцию с живым сайтом, не влияя на пользователей? - PullRequest
0 голосов
/ 18 ноября 2011

Я реализовал Непрерывную интеграцию, используя TFS Version Control и TFS Build 2010. Скомпилированный проект веб-сайта помещается в общую папку с номером версии.

Теперь у меня очень простой вопрос, и он может быть глупымвопрос.Когда мы обычно разворачиваем проект веб-сайта из VS 2010 на веб-сервере, он загружает файл App_Offline.htm в папку веб-сайта, поэтому пользователю не отправляются запросы.После завершения публикации этот файл App_Offline.htm удаляется.В этот период пользователи видят перебои в работе.

Если мы используем CI на живом веб-сайте, то как мы можем устранить тот сбой, который кажется пользователю.Я считаю, что весь смысл CI в том, что пользователи получают возможность видеть новые функции, а сайт никогда не закрывается.

Как это достигается?Если мы развернем проект веб-сайта в корневой папке, это повлияет на существующих пользователей, и это, конечно, не рекомендуется.

Я хотел бы знать, какова рекомендуемая практика с VS2010, TFS2010 Build & Version Control.

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Реального надежного метода для этого не существует, время службы никогда не бывает 100%, поэтому люди обычно определяют его в ' nines '

Но, если у вас было несколько веб-серверов(Резервное копирование, восстановление после сбоя, зеркалирование и т. Д.), Вы можете развернуть обновление на них, чтобы при обновлении некоторых серверов другие все еще оставались в сети (хотя и со старой версией) для обслуживания пользователей.

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

1 голос
/ 21 ноября 2011

Что касается отключения сайта на кратчайшее время, единственный способ, которым я видел, как это было успешно сделано, - это использование нескольких сайтов - либо балансировка нагрузки, либо 2 сайтов на одном компьютере + замена заголовков узлов после выпуска / прогрева , Но в большинстве случаев усилия не стоят того, что релизы не должны занимать сайт дольше, чем на несколько секунд, в течение которых должно быть относительно мало запросов. Вам лучше попробовать несколько вещей, которые вы можете сделать, чтобы помочь своим пользователям пережить релиз сайта.

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

Укажите машинный ключ для сайта Viewstate (и файлы cookie?) Шифруются с помощью ключа, который генерируется при запуске сайта, если сайт перезапускается из-за выпуска, любой пользователь, заполнивший форму, получит недопустимое исключение viewstate при обратной передаче. (Примечание: это может иметь и другие последствия для безопасности)

...