Архитектура Team Foundation Server (TFS)

В данной статье представлена архитектура TFS и основные схемы развертывания. TFS логически представлен трехуровневой архитектурой, которая включает клиентский уровень, уровень приложений и уровень данных. Клиенты TFS взаимодействуют с уровнем приложений посредством различных Веб-сервисов, а уровень приложений использует различные базы данных Microsoft SQL Server уровня данных.

Уровни приложений и данных физически могут располагаться как на одном сервере, так и на разных серверах. Выбор, главным образом, зависит от размера группы, работающей над проектом. Для групп менее 50 человек лучше использовать один сервер. Достаточно мощный сервер может обслуживать до 400 пользователей. Развертывание на двух серверах позволяет обслуживать около 2000 пользователей.

Архитектура Team Foundation Server

TFS использует трехуровневую архитектуру, которая включает клиентский уровень, уровень приложений и уровень данных. Клиенты TFS взаимодействуют с уровнем приложений посредством различных Веб-сервисов; уровень приложений, в свою
очередь, поддерживается различными базами данных уровня данных. На рис. 2.1 показаны компоненты и взаимодействия всех уровней TFS.


Рис. 2.1 Компоненты и уровни TFS

Клиентский уровень

Клиентский уровень включает следующие компоненты:

  1. Объектная модель Team Foundation Server. Это открытый API, используемый для взаимодействия с TFS. Объектная модель может использоваться для создания клиентских приложений, взаимодействующих с TFS.
  2. Компоненты Visual Studio Industry Partners (VSIP). Это инструментальные средства, надстройки и языки программирования сторонних производителей для Visual Studio.
  3. Интеграция с Microsoft Office. Включает ряд надстроек Microsoft Office Excel® и Microsoft Office Project, которые обеспечивают возможность запрашивать и обновлять рабочие элементы в базе данных TFS Work Item Tracking. Особенно полезна для руководителей проектов, которые уже активно используют эти приложения.
  4. Инструментальные средства командной строки. Это инструментальные средства, обеспечивающие возможность взаимодействия с TFS из командной строки. Преимущественное большинство этих инструментов предоставляют
  5. функциональность контроля версий и используются для автоматизации повторяющихся и выполняющихся по расписанию задач.
  6. Инфраструктура политик регистрации изменений файла в системе контроля версий. Поддерживает политики регистрации изменений, которые являются расширяемым механизмом проверок исходного кода в процессе регистрации изменений.

Уровень приложений

Уровень приложений предоставляет Веб-сервисы ASP.NET, с которыми взаимодействует клиентский уровень. Эти Веб-сервисы не предназначены для использования в сторонних приложениях, но приведены здесь для полноты картины. Веб-сервисы сгруппированы в следующие наборы:

  1. Сервисы обработки данных TFS (Team Foundation Data Services)
  2. Сервисы интегрирования TFS (Team Foundation Integration Services)

Сервисы обработки данных TFS

Эти Веб-сервисы преимущественно обеспечивают взаимодействие с уровнем данных. К этим сервисам относятся:

  1. Веб-сервис контроля версий. Клиентский уровень использует этот Веб-сервис для выполнения различных операций контроля версий и взаимодействия с базой данных исходного кода.
  2. Веб-сервис для отслеживания рабочих элементов. Клиентский уровень использует этот Веб-сервис для создания, обновления рабочих элементов и запросов к базе данных отслеживания рабочих элементов.
  3. Веб-сервис сборки. Клиентский уровень и инфраструктура MSBuild используют этот Веб-сервис для выполнения процессов сборки приложений.

Сервисы интегрирования TFS

Данный набор Веб-сервисов обеспечивает функциональность интегрирования и автоматизации. Эти сервисы не взаимодействуют с уровнем данных. К сервисам интегрирования TFS относятся:
  1. Веб-сервис регистрации. Этот сервис используется для регистрации других сервисов TFS. Он обслуживает информацию регистрационной базы данных. Эта информация используется сервисами для определения способа взаимодействия друг с другом.
  2. Веб-сервис безопасности. Этот сервис состоит из Сервиса групповой безопасности (Group Security Service) и Сервиса авторизации (Authorization Service). Сервис групповой безопасности используется для управления всеми пользователями и группами TFS. Сервис авторизации предоставляет TFS систему управления доступом.
  3. Веб-сервис связывания. Этот сервис обеспечивает возможность устанавливать отношения слабой связи (или просто «связи») между элементами данных
  4. инструментальных средств. Например, соответствие между рабочим элементом (например, дефектом), и исходным кодом, который был изменен с целью исправления этого дефекта, устанавливается в TFS при помощи связи.
  5. Веб-сервис обработки событий. Этот сервис обеспечивает возможность инструментальному средству или сервису регистрировать типы событий. Пользователи могут подписываться на эти события и получать уведомления по электронной почте или посредством вызова Веб-сервиса. Например, событие регистрации изменений может использоваться для запуска процесса непрерывной интеграции.
  6. Веб-сервис классификации. Этот сервис совместно с Веб-сервисом связывания обеспечивает классификацию артефактов TFS соответственно установленным систематикам. Это обеспечивает возможность поддерживать создание перекрестных отчетов даже для артефактов, не использующих общую систематику для организации своих данных. Например, если обычно рабочие элементы группируются по проектным группам, а тесты – по компонентам, то с помощью классификации можно организовать тесты по проектным группам, так они смогут быть включены в тот же отчет, что и рабочие элементы.

Уровень данных

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

  1. Отслеживание рабочих элементов. Здесь хранятся все данные, касающиеся рабочих элементов.
  2. Контроль версий. Здесь хранятся все данные, касающиеся контроля версий.
  3. Сборка. Содержит всю информацию, касающуюся инструмента TFS Team Build.
  4. Хранилище отчетов. Хранит информацию, касающуюся всех инструментов и функций TFS. Хранилище отчетов упрощает создание отчетов, сочетающих в себе данные нескольких инструментальных средств.

Схема развертывания

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

Основные требования

Независимо от выбранной схемы развертывания:

  1. Уровни приложений и данных должны быть установлены в одном домене, хотя могут располагаться как на одном, так и на разных серверах.
  2. На серверах, на которых развертывается TFS, должен быть установлен Microsoft Windows Server™ 2003 с Service Pack 1 (SP1) или его более поздняя версия.
  3. Все Веб-сервисы уровня приложений TFS должны быть установлены на одном сервере.
  4. Один экземпляр TFS физически должен быть установлен на одном компьютере.
  5. На один физический сервер нельзя устанавливать более одного экземпляра TFS.
  6. Нельзя распределять базы данных TFS по нескольким серверам баз данных. Все проекты должны находиться в одной группе серверов Team Foundation Server и не могут развертываться в нескольких группах (т.е. проект не может использовать уровень приложений одного экземпляра TFS и уровень данных другого экземпляра TFS).
  7. Для размещения сайта портала проекта нельзя использовать существующую инфраструктуру Microsoft SharePoint® Portal Server. Порталы TFS должны размещаться на выделенном сервере1.
  8. Не следует устанавливать TFS на сервер, сконфигурированный как контроллер домена – такой сценарий установки не поддерживается.
  9. При развертывании на двух серверах необходимо подготовить доменные учетные записи, которые будут использоваться при запуске сервисов TFS. Например, учетные записи могут быть такими: DOMAIN\TFSSERVICE и DOMAIN\TFSREPORTS.

Развертывание на одном сервере

Развертывание на одном сервере – самая простая схема. Она подходит для групп разработки, в которых участвуют до 400 пользователей, или пилотных проектов. В этом случае все компоненты уровня приложений и уровня данных устанавливаются на один сервер и доступ к ним осуществляется из одного домена. Средства тестирования производительности можно установить на сервере или на одном и более клиентах. На рис. 2.2 показана схема развертывания на одном сервере.


Рис. 2.2 Схема развертывания на одном сервере

Развертывание на двух серверах

Схема развертывания на двух серверах используется для больших групп разработки с количеством пользователей до 2000. В этом случае уровень приложений и уровень данных размещаются на разных серверах. Сервисы сборки TFS можно установить на сервере уровня приложений, но для больших групп рекомендуется настроить один или более специальных серверов сборки. Если в проекте предусмотрено тестирование производительности, средства тестирования (контроллер и агенты) можно развернуть на дополнительных серверах. На рис. 2.3 показана схема развертывания на двух серверах. Рис.


2.3 Схема развертывания на двух серверах

Заключение

Архитектура Team Foundation Server включает три уровня: клиентский уровень, уровень приложений и уровень данных.

  1. Клиентский уровень содержит клиентские компоненты, такие как Team Explorer, компоненты для интеграции с Microsoft Office и инструменты командной строки.
  2. Уровень приложений содержит такие компоненты, как сервисы контроля версий Team Foundation, сервисы для отслеживания рабочих элементов и сервисы сборки.
  3. Уровень данных содержит базы данных для хранения данных, необходимых для отслеживания рабочих элементов, контроля версий, сборок проектов и создания отчетов.

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