Мне нужен совет / лучшие практики / + ve / -ve или другие идеи по развертыванию и обслуживанию многих (50) веб-служб и приложений веб-служб на IIS в кластере серверов приложений из 10 машин для сервис-ориентированного клиента (WinApp ) Программное обеспечение.
В настоящее время у нас есть одно решение, которое содержит множество проектов веб-служб. Программное обеспечение разрабатывается отдельно, а затем интегрируется по мере готовности к выпуску. Это включает в себя диспетчер интеграции (незнакомый с кодом), добавляющий проект в основное решение и гарантирующий, что все работает, например ссылки и т.д. не нарушены. Это означает, что мы получаем один сайт в IIS, который обслуживает множество веб-сервисов.
Недавняя альтернативная идея состоит в том, чтобы иметь несколько сайтов - возможно, сгруппировать связанные веб-службы в один сайт, но сохранить другие веб-службы на разных сайтах, хотя это увеличивает обслуживание (поскольку сайтов больше), это означает, что части программного обеспечения могут обновляться раздельно. и протестирован разработчиком, написавшим код.
Может быть актуально: мы используем систему контроля версий для кода, у нас много пользователей (около 1 миллиона обращений в день) и мы можем терпеть 0 простоев в рабочее время.
В настоящее время для обновления одной веб-службы сервер приложений необходимо вывести из кластера, обновить, а затем снова добавить в кластер.
Есть ли более эффективный / гибкий, но все же поддерживаемый способ сделать это?
Я могу поделиться некоторыми мыслями о том, что мы есть В настоящее время в новом центре обработки данных Stack Overflow, что может дать вам несколько идей. Существует промежуточный сервер, который нужно сначала создать в качестве тестового. Промежуточный сервер - это копия всех рабочих серверов. Когда добавляется новый сайт, после тестирования я синхронизирую applicationhost.config с простым скриптом PowerShell. Для дальнейших обновлений уже развернутого сайта мы используем круиз-контроль для .NET, который позволяет выполнять автоматические сборки на веб-серверах. Я играл с общей конфигурацией IIS, но обнаружил, что она немного глючная.
Чтобы автоматизировать вывод сервера из кластера, вы можете добавить проверку работоспособности в свой балансировщик нагрузки, которая автоматически выведет его из кластера.
Мне нравится ваша идея сгруппировать сайты IIS по разработчикам или командам разработчиков. Мы делаем нечто подобное, и это позволяет разработчикам владеть собственным кодом. Как администратор, вы по-прежнему можете владеть серверами, но не мешать разработчикам.
Я также только что услышал интересный разговор о непрерывном развертывании, который вы (часто переходите в продакшн), о котором вы можете немного почитать. Вот. Вы могли бы почерпнуть некоторые идеи из этого.
В конечном итоге вы должны разработать то, что лучше всего подходит для вашей компании и вашей культуры.