У нас есть огромное веб-приложение ASP.NET, которое необходимо развернуть до LIVE с нулевым или почти нулевым временем простоя. Позвольте мне отметить, что я прочитал следующие вопросы/ответы, но, к сожалению, он не решает наши проблемы, так как наша архитектура немного сложнее.
Скажем, что в настоящее время у нас есть два сервера IIS, отвечающих на запросы, и оба они подключены к одному и тому же серверу MSSQL. Решение похоже на кусок торта, но это происходит не из-за основных изменений схемы, которые мы должны применять время от времени. Из-за огромного размера простая резервная копия базы данных занимает около 8 минут, что стало неприемлемым, но это необходимо перед каждым новым развертыванием по соображениям безопасности.
Я хотел бы попросить вашу помощь, чтобы максимально сократить время развертывания. Если у вас есть отличные идеи для другой архитектуры или, возможно, вы использовали инструменты, которые могут помочь нам здесь, пожалуйста, не стесняйтесь и делитесь информацией.
В настоящее время лучшая идея, которую мы придумали, заключается в покупке другого SQL-сервера, который будет настроен как реплика исходной БД. Из балансировщика нагрузки мы отправили весь новый трафик на один из двух веб-серверов IIS. Когда на втором веб-сервере не будет выполняться сеансов, мы можем развернуть новый код. Сейчас идет сложная часть. На этом этапе мы отправимся в автономный режим с веб-сайта, устраним репликацию между двумя SQL-серверами, чтобы мы сразу имели моментальный снимок базы данных в надежно согласованном состоянии (экономит 7,5 из 8 минут). Наконец, мы обновили схему базы данных на основном SQL-сервере и проложили весь трафик через обновленный веб-сервер, пока мы обновляем второй веб-сервер до новой версии.
Пожалуйста, поделитесь своими мыслями относительно этого решения. Можем ли мы как-то избавиться от необходимости переходить в автономный режим с веб-сайтом? Как развертываются компании bluechip с веб-приложениями для маммутов?
Каждая идея или предложение более чем приветствуются! Покупка нового оборудования или программного обеспечения действительно не проблема - мы просто пропустили идею. Заранее благодарим за помощь!
Изменить 1 (2010.01.12):
Еще одно требование - исключить ручное вмешательство, поэтому мы ищем способ, который можно применять автоматическим способом.
Позвольте мне напомнить вам список требований:
1. Резервное копирование базы данных
2а. Развертывание веб-сайта
2b. Обновление схемы базы данных
3. Изменение на обновленный сайт
4 (необязательно): простой способ вернуться на старый веб-сайт, если что-то пойдет не так.