ASP.Net zero down time deployment, как лучше и дешевле?
Добрый день уважаемые коллеги, уже долгое время плохо сплю потому, что мучает одна проблема, суть её в следующем:
Есть ASP.Net MVC WEB API и IIS7 приложение которое обрабатывает запросы от пользователей.
Собственно проблема в том, что время от времени приходиться обновлять приложение, а в этот момент происходит очистка пула приложения и приложение становиться недоступно на 40-80с., соответственно все текущие задачи обрываются...
Собственно хотелось бы услышать советы бывалых разработчиков, администраторов, которым приходилось разрабатывать средние и крупные проекты.
Для себя я пока подумываю сделать два пула приложений на одной машине, а впереди перед сервером поднять Nginx в качестве reverse-proxy, в котором вручную управлять на какой из пулов ему нужно стучаться. В этом случае обновление решения просто происходит на соседнем пуле, а затем переключается активный пул в Nginx. В дальнейшем если нагрузка будет расти в теории можно разнести по разным серверам.
Однако может быть я изобретаю велосипед и есть решения намного проще и дешевле?
PS: Вопрос цены тоже имеет значение т.к. всё находится в облаке.
Есть решение с использованием модуля Application Request Routing, описанное на serverfault, правда, лично я его не пробовал. Можно попробовать начать с этого, а если будет работать ненадежно или в случае роста нагрузки — тогда уже ставить nginx.