Корпоративное веб-развертывание: обзор сценария

Джейсон Ли

В этом наборе учебников используется пример решения с реалистичным уровнем сложности вместе с вымышленным сценарием корпоративного развертывания, чтобы предложить справочную реализацию и задать общую основу для задач и пошаговых руководств. В этом разделе описывается сценарий учебника и представлен пример решения.

Описание сценария

Fabrikam, Inc., вымышленная компания, создает решение, которое позволяет удаленным группам продаж хранить и получать контактные данные из веб-интерфейса.

Процессы управления жизненным циклом приложений (ALM) в Fabrikam, Inc. требуют развертывания решения в трех серверных средах на различных этапах процесса разработки программного обеспечения:

  • Тестовая среда разработчика или "песочница".
  • Промежуточная среда, основанная на интрасети.
  • Рабочая среда, подключенная к Интернету.

Каждая из этих сред имеет разные требования к конфигурации и безопасности, и каждая из них создает уникальные проблемы развертывания.

Инфраструктура сервера 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.

Задачи развертывания

Существует несколько различных задач, связанных с развертыванием приложений в разных средах в большой организации. Это основные задачи, которые рассматриваются в руководствах:

Существует несколько различных задач, связанных с развертыванием приложений в разных средах в большой организации.

Ниже приведен список каждого шага процесса развертывания с точки зрения пользователей, описанных ранее в этом документе:

  1. Все члены команды просматривают решение Диспетчера контактов в Visual Studio 2010, чтобы определить ключевые требования к развертыванию и проблемы.
  2. Matt Hink может развернуть решение Contact Manager непосредственно с рабочей станции разработчика в тестовой среде разработчика, чтобы провести первоначальный тест логики развертывания.
  3. Мэтт Хинк добавляет приложение в систему контроля версий в Team Foundation Server.
  4. Роб Уолтерс создает различные определения сборки для решения Contact Manager в Team Build. Одно определение сборки использует CI для развертывания решения в тестовой среде разработчика всякий раз, когда пользователь проверяет новый код. Другое определение сборки позволяет пользователям запускать развертывания в промежуточной среде по мере необходимости.
  5. Каждый раз, когда пользователь проверяет новый код, Team Build автоматически создает компоненты решения, выполняет модульные тесты и развертывает решение в тестовой среде разработчика, если сборка была успешной, а модульные тесты проходят.
  6. Когда пользователь активирует развертывание в промежуточной среде, решение упаковается и развертывается в одношаговом процессе. Этот процесс также создает пакет для ручного развертывания в рабочей среде.
  7. Лиза Эндрюс развертывает приложение в рабочей среде, импортируя веб-пакет, созданный на шаге 6.

Основные проблемы с развертыванием

Решение Диспетчера контактов и сценарий Fabrikam, Inc. выделяют различные распространенные проблемы и проблемы, которые могут возникнуть при развертывании сложных решений корпоративного масштаба. Рассмотрим пример.

  • Необходимо иметь возможность развертывать проекты в нескольких средах, таких как среды разработчика или тестирования, промежуточные платформы и рабочие серверы. Решение необходимо развернуть с различными параметрами конфигурации для каждой среды.
  • Необходимо одновременно развернуть несколько зависимых проектов в рамках одношагового или автоматизированного процесса сборки и развертывания.
  • Необходимо иметь возможность управлять развертыванием из автоматизированного процесса. Например, вы хотите использовать процесс CI для внедрения веб-приложений в промежуточной среде при внесении нового кода.
  • Вам потребуется управлять процессом развертывания и задавать переменные развертывания извне Visual Studio, так как разработчики вряд ли имеют правильные параметры конфигурации или необходимые учетные данные для каждой целевой среды.
  • Необходимо развернуть проекты баз данных на основе схем и сохранить существующие данные при последующих развертываниях.
  • Необходимо развернуть базы данных членства на нерегламентированной основе без развертывания данных учетной записи пользователя. Также может потребоваться обновить схему развернутых баз данных членства, не теряя существующие данные учетной записи пользователя.
  • При развертывании содержимого в различных целевых средах необходимо исключить определенные файлы или папки.

Кроме того, управление развертыванием при частых и постепенных обновлениях вызывает некоторые дополнительные проблемы. Рассмотрим пример.

  • Модульные тесты выполняются каждый раз, когда разработчик проверяет новый код. Вы хотите развернуть решение только в том случае, если код прошёл модульные тесты.
  • При развертывании веб-приложения в промежуточной или рабочей среде необходимо перенаправить пользователей в файлapp_offline.htm в течение процесса развертывания.
  • Вы хотите регистрировать действия развертывания. Процесс развертывания должен отправлять уведомления по электронной почте об успешном или неудачном развертывании назначенным получателям.
  • Если автоматическое развертывание завершается ошибкой, процесс развертывания должен повторить текущее развертывание или развернуть предыдущий веб-пакет.