По умолчанию - при одновременном изменении 15 файлов в приложении ASP.NET (даже через FTP) пул приложений автоматически перезагружается. Вы можете изменить количество файлов, но как только файлы web.config и bin будут изменены, его нужно будет перезапустить. Поэтому, на мой взгляд, идеальное решение для такой среды, как ваша, было бы следующим:
4 веб-сервера (это произвольное число)
у каждого сервера есть status.aspx, на который смотрит балансировщик нагрузки - используйте TeamCity, чтобы отключить 2 из этих серверов (отключить балансировщик нагрузки) и подождать 20 секунд, пока трафик не будет отфильтрован. Распределенный кеш поможет сохранить проблемы с пользовательским интерфейсом
Используйте TeamCity для развертывания на этих 2 серверах - запустите автоматизированные тесты и т. Д., И, когда вы будете довольны, верните их в ферму, переведите 2 других в автономный режим и разверните на этих
Все это может быть заскриптовано / автоматизировано. Единственная проблема с этим - любые изменения схемы, которые не являются обратно совместимыми, могут не позволить запустить сайт новой версии параллельно со старой версией сайта в течение 20 секунд, пока балансировщик нагрузки не откатится назад
Это старый добрый Canary Releasing - здесь есть несколько шаблонов http://continuousdelivery.com/patterns/, которые помогут принять во внимание. Я бы также предложил копию этой книги о непрерывной доставке - она похожа на библию о непрерывной доставке и вывела меня из нескольких ситуаций:)