Поделиться через


Корпоративное веб-развертывание. Общие сведения о сценарии

Джейсон Ли

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

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

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, синхронизированных сервером контроллера платформы веб-фермы (WFF), а также сервер базы данных SQL Server 2008 R2. На практике сервер базы данных может использовать кластеризация или зеркальное отображение для повышения масштабируемости и доступности.
  • Промежуточная среда предназначена для максимально точной репликации конфигурации рабочей среды.
  • Политики брандмауэра и сетевой изоляции не разрешают прямое автоматическое развертывание из интрасети в сеть периметра.

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

Роли команды для управления жизненным циклом

Эти пользователи участвуют в создании, администрировании, создании и публикации решения Диспетчера контактов:

  • Мэтт Хинк является разработчиком веб-приложений в Fabrikam, Inc. Он является частью команды, которая разработала решение диспетчера контактов с помощью Visual Studio 2010. Мэтт имеет полные права администратора на серверах в тестовой среде разработчика, что позволяет ему настроить среду в соответствии с его потребностями. Он также имеет доступ пользователя к экземпляру Visual Studio 2010 TFS, где он хранит исходный код для решения Диспетчера контактов.

  • Роб Уолтерс ( Rob Walters) — администратор сервера в группе разработчиков Fabrikam, Inc. Роб имеет административный доступ на сервере TFS, чтобы настроить все аспекты TFS и Team Build. Роб также имеет административный доступ к тестовой и промежуточной веб-серверам и выступает в качестве администратора базы данных (DBA) для серверов баз данных в тестовой и промежуточной средах. Роб настроил Team Build на сервере TFS для выполнения следующих задач:

    • Создавайте и запускайте модульные тесты в приложении всякий раз, когда пользователь возвращает файл в TFS. Это называется CI.
    • Разверните приложение Диспетчера контактов в тестовой среде автоматически после того, как приложение пройдет модульные тесты. Сюда входит публикация базы данных на тестовых серверах при первоначальном развертывании и любые обновления базы данных после первоначального развертывания.
    • Разверните приложение Диспетчера контактов в промежуточной среде в рамках одношагового процесса.
    • Создайте веб-пакет, который администратор веб-сервера и администратор базы данных могут использовать для публикации приложения в рабочей среде.
  • Лиза Эндрюс — администратор сервера, отвечающий за развертывание приложений на рабочих серверах Fabrikam, Inc. У нее есть доступ на чтение к общей папке, в которой командная сборка TFS хранит пакет веб-развертывания после сборки приложения Диспетчера контактов. Она также имеет административный доступ к рабочим веб-серверам, чтобы развернуть приложение в рабочей среде. Кроме того, она выступает в качестве администратора базы данных, который развертывает базы данных и обновления базы данных на сервере базы данных в рабочей среде.

Решение диспетчера контактов

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

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

  • ContactManager.Mvc. Это проект веб-приложения ASP.NET MVC3, представляющий точку входа для решения. Он предлагает некоторые базовые функции веб-приложения, такие как предоставление пользователям возможности создавать и просматривать контактные данные. Приложение использует службу Windows Communication Foundation (WCF) для управления контактами и базу данных служб приложений ASP.NET для управления проверкой подлинности и авторизацией.
  • ContactManager.Database. Это проект базы данных Visual Studio 2010. Проект определяет схему для базы данных, в котором хранятся контактные данные.
  • ContactManager.Service. Это проект веб-службы WCF. WCF предоставляет конечную точку, которая позволяет вызывающим абонентам выполнять операции создания, извлечения, обновления и удаления (CRUD) в базе данных Диспетчера контактов. Служба использует базу данных Диспетчера контактов и сборку ContactManager.Common.dll.
  • ContactManager.Common. Это проект библиотеки классов. Служба WCF использует типы, определенные в этой сборке.

Полный обзор решения и требований к его развертыванию приведен в первом руководстве этой серии , Веб-развертывание на предприятии.

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

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

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

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

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

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

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

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

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

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