Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом наборе учебников используется пример решения с реалистичным уровнем сложности вместе с вымышленным сценарием корпоративного развертывания, чтобы предложить справочную реализацию и задать общую основу для задач и пошаговых руководств. В этом разделе описывается сценарий учебника и представлен пример решения.
Описание сценария
Fabrikam, Inc., вымышленная компания, создает решение, которое позволяет удаленным группам продаж хранить и получать контактные данные из веб-интерфейса.
Процессы управления жизненным циклом приложений (ALM) в Fabrikam, Inc. требуют развертывания решения в трех серверных средах на различных этапах процесса разработки программного обеспечения:
- Тестовая среда разработчика или "песочница".
- Промежуточная среда, основанная на интрасети.
- Рабочая среда, подключенная к Интернету.
Каждая из этих сред имеет разные требования к конфигурации и безопасности, и каждая из них создает уникальные проблемы развертывания.
Инфраструктура сервера Fabrikam, Inc.
Это высокоуровневая инфраструктура разработки и развертывания в Fabrikam, Inc.
Рабочие станции разработчика, инфраструктура системы управления версиями, тестовая среда разработчика и промежуточная среда находятся в сети интрасети в домене Fabrikam.net. Рабочая среда находится в сети периметра (также известной как DMZ, демилитаризованная зона и экранированная подсеть), которая изолирована от сети интрасети брандмауэром. Это распространенный сценарий развертывания: обычно вы изолируете веб-серверы, подключенные к Интернету, от внутренней инфраструктуры сервера с помощью брандмауэров или серверов шлюзов.
В этом примере:
- Сервер Team Foundation Server (TFS) 2010 с отдельным сервером сборки предоставляет функции управления версиями и непрерывной интеграции (CI).
- Тестовая среда разработчика включает веб-сервер Интернет-информационные службы (IIS) 7.5 и сервер базы данных SQL Server 2008 R2.
- Рабочая среда включает несколько веб-серверов IIS 7.5, синхронизированных сервером контроллера Web Farm Framework (WFF), вместе с сервером базы данных SQL Server 2008 R2. На практике сервер базы данных может использовать кластеризацию или зеркальное отображение для повышения масштабируемости и доступности.
- Стейджинговая среда предназначена для воспроизведения конфигурации рабочей среды максимально точно.
- Политики брандмауэра и сетевой изоляции не допускают прямого автоматического развертывания из интрасети в сеть периметра.
Конфигурация каждой из этих сред подробно описана во втором руководстве по настройке сред сервера для веб-развертывания.
Роли команды для ALM
Эти пользователи участвуют в создании, управлении, создании и публикации решения Диспетчера контактов:
Мэтт Хинк является разработчиком веб-приложений в Fabrikam, Inc. Он является частью команды, которая разработала решение Диспетчера контактов с помощью Visual Studio 2010. Мэтт имеет полные права администратора на серверах в тестовой среде разработчика, что позволяет ему настроить среду в соответствии с потребностями. Он также имеет доступ пользователя к экземпляру TFS Visual Studio 2010, где хранится исходный код для решения Диспетчера контактов.
Роб Уолтерс является администратором сервера для команды разработчиков Fabrikam, Inc. Rob имеет административный доступ на сервере TFS, чтобы он смог настроить все аспекты TFS и Team Build. Rob также имеет административный доступ к тестируемым и промежуточным веб-серверам и выступает в качестве администратора базы данных (DBA) для серверов баз данных в тестовых и промежуточных средах. Rob настроил командную сборку на сервере TFS для выполнения следующих задач:
- Создавайте и выполняйте модульные тесты в приложении всякий раз, когда пользователь проверяет файл в TFS. Это называется CI.
- Разверните приложение Диспетчер контактов в тестовой среде автоматически после прохождения модульных тестов. Это включает публикацию базы данных на тестовых серверах при первоначальном развертывании и любых обновлений базы данных после первоначального развертывания.
- Разверните приложение Диспетчера контактов в промежуточной среде в один шаг.
- Создайте веб-пакет, который может использовать администратор веб-сервера и DBA для публикации приложения в рабочей среде.
Лиза Эндрюс является администратором сервера, ответственным за развертывание приложений на рабочих серверах Fabrikam, Inc. У нее есть доступ на чтение к сетевой папке, в которой TFS Team Build сохраняет пакет веб-развертывания после сборки приложения Contact Manager. Она также имеет административный доступ к рабочим веб-серверам, чтобы она могли развернуть приложение в рабочей среде. Кроме того, она выступает в качестве DBA, которая развертывает базы данных и обновления базы данных на сервере базы данных в рабочей среде.
Решение диспетчера контактов
Решение Диспетчера контактов предназначено для того, чтобы пользователи, зарегистрированные в систему, добавляли и редактировали контактные данные через веб-интерфейс. Решение Диспетчера контактов состоит из четырех отдельных проектов:
- ContactManager.Mvc. Это проект веб-приложения MVC3 ASP.NET, представляющий точку входа для решения. Он предлагает некоторые основные функции веб-приложения, например предоставление пользователям возможности создавать и просматривать контактные данные. Приложение использует службу Windows Communication Foundation (WCF) для управления контактами и базой данных служб приложений ASP.NET для управления проверкой подлинности и авторизацией.
- ContactManager.Database. Это проект базы данных Visual Studio 2010. Проект определяет схему для базы данных, в которой хранятся контактные данные.
- ContactManager.Service. Это проект веб-службы WCF. WCF предоставляет конечную точку, которая позволяет вызывающим пользователям выполнять операции создания, извлечения, обновления и удаления (CRUD) в базе данных Диспетчера контактов. Служба использует базу данных Диспетчера контактов и сборку ContactManager.Common.dll.
- ContactManager.Common. Это проект библиотеки классов. Служба WCF зависит от типов, определенных в этой сборке.
Полный обзор решения и его требований к развертыванию предоставляется в первом руководстве из этого ряда веб-развертывания в Enterprise.
Задачи развертывания
Существует несколько различных задач, связанных с развертыванием приложений в разных средах в большой организации. Это основные задачи, которые рассматриваются в руководствах:
Ниже приведен список каждого шага процесса развертывания с точки зрения пользователей, описанных ранее в этом документе:
- Все члены команды просматривают решение Диспетчера контактов в Visual Studio 2010, чтобы определить ключевые требования к развертыванию и проблемы.
- Matt Hink может развернуть решение Contact Manager непосредственно с рабочей станции разработчика в тестовой среде разработчика, чтобы провести первоначальный тест логики развертывания.
- Мэтт Хинк добавляет приложение в систему контроля версий в Team Foundation Server.
- Роб Уолтерс создает различные определения сборки для решения Contact Manager в Team Build. Одно определение сборки использует CI для развертывания решения в тестовой среде разработчика всякий раз, когда пользователь проверяет новый код. Другое определение сборки позволяет пользователям запускать развертывания в промежуточной среде по мере необходимости.
- Каждый раз, когда пользователь проверяет новый код, Team Build автоматически создает компоненты решения, выполняет модульные тесты и развертывает решение в тестовой среде разработчика, если сборка была успешной, а модульные тесты проходят.
- Когда пользователь активирует развертывание в промежуточной среде, решение упаковается и развертывается в одношаговом процессе. Этот процесс также создает пакет для ручного развертывания в рабочей среде.
- Лиза Эндрюс развертывает приложение в рабочей среде, импортируя веб-пакет, созданный на шаге 6.
Основные проблемы с развертыванием
Решение Диспетчера контактов и сценарий Fabrikam, Inc. выделяют различные распространенные проблемы и проблемы, которые могут возникнуть при развертывании сложных решений корпоративного масштаба. Рассмотрим пример.
- Необходимо иметь возможность развертывать проекты в нескольких средах, таких как среды разработчика или тестирования, промежуточные платформы и рабочие серверы. Решение необходимо развернуть с различными параметрами конфигурации для каждой среды.
- Необходимо одновременно развернуть несколько зависимых проектов в рамках одношагового или автоматизированного процесса сборки и развертывания.
- Необходимо иметь возможность управлять развертыванием из автоматизированного процесса. Например, вы хотите использовать процесс CI для внедрения веб-приложений в промежуточной среде при внесении нового кода.
- Вам потребуется управлять процессом развертывания и задавать переменные развертывания извне Visual Studio, так как разработчики вряд ли имеют правильные параметры конфигурации или необходимые учетные данные для каждой целевой среды.
- Необходимо развернуть проекты баз данных на основе схем и сохранить существующие данные при последующих развертываниях.
- Необходимо развернуть базы данных членства на нерегламентированной основе без развертывания данных учетной записи пользователя. Также может потребоваться обновить схему развернутых баз данных членства, не теряя существующие данные учетной записи пользователя.
- При развертывании содержимого в различных целевых средах необходимо исключить определенные файлы или папки.
Кроме того, управление развертыванием при частых и постепенных обновлениях вызывает некоторые дополнительные проблемы. Рассмотрим пример.
- Модульные тесты выполняются каждый раз, когда разработчик проверяет новый код. Вы хотите развернуть решение только в том случае, если код прошёл модульные тесты.
- При развертывании веб-приложения в промежуточной или рабочей среде необходимо перенаправить пользователей в файлapp_offline.htm в течение процесса развертывания.
- Вы хотите регистрировать действия развертывания. Процесс развертывания должен отправлять уведомления по электронной почте об успешном или неудачном развертывании назначенным получателям.
- Если автоматическое развертывание завершается ошибкой, процесс развертывания должен повторить текущее развертывание или развернуть предыдущий веб-пакет.