Azure DevOps Serverのアーキテクチャの概要

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

デプロイを最適に計画して管理するには、まずAzure DevOps Serverの基になるアーキテクチャを理解する必要があります。 アーキテクチャについて理解することで、配置の全体的な健全性を維持し、開発チームが必要とするサーバーとサービスの全体的な可用性を確保することができます。

Azure DevOps Serverは、複数の方法で展開できます。1 台のサーバー上、多数のサーバー上、または 1 つのドメインまたはワークグループ内、または複数のドメインに展開できます。 または、展開のすべてのサーバー要素が Microsoft によってホストされるAzure DevOps Servicesを使用することもできます。 アーキテクチャを理解することは、どのトポロジーがビジネス ニーズに最適であるかを判断する助けになります。 トポロジの選択に関係なく、Azure DevOps Serverの基になるアーキテクチャを理解すれば、物理要件と論理要件をより適切に管理できます。 この記事では、さまざまなアーキテクチャの簡単な概要と、デプロイ例に関する詳細情報へのリンクを示します。 また、ローカル配置のサービス、データベース、構成情報、ネットワーク ポートおよびプロトコルに関する技術情報を提供します。

Azure DevOps Serverのアーキテクチャと、それがデプロイにどのように影響するかを理解するには、次の点を考慮する必要があります。

  • Azure DevOps の論理アプリケーション、データ、クライアント層、およびアプリケーション層とデータ層に 1 つ以上のサーバーを使用するかどうか、またはアプリケーション層とデータ層をクラウドでホストするかどうかをAzure DevOps Services
  • これらの層をホストする物理サーバーまたは仮想サーバーの場所。
  • Team Foundation Build と、開発プラクティスをサポートするために必要な数、または Azure Pipelines クラウド サービスを使用してソフトウェア アプリケーションをビルドしてデプロイするかどうかなど、環境内で実行されるビルド コンピューターの数と場所
  • Azure DevOps プロキシ サーバーの潜在的な必要性

さらに、これらのエンティティ間の相互作用も考慮する必要があります。 たとえば、ホステッド Azure DevOps Server サービスを使用する場合は、クライアントがポート 443 でサービスにアクセスできることを確認する必要があります。 Azure DevOps Serverをローカルにデプロイする場合は、使用する Web サービス、データベース、およびオブジェクト モデルAzure DevOps Server把握しておく必要があります。 また、既定で使用Azure DevOps Serverネットワーク ポートとプロトコルと、カスタマイズできるネットワーク ポートを把握しておく必要があります。 最後に、Azure DevOps Serverで設定する必要があるアクセス許可と、デプロイが依存するコンポーネントとプログラムを理解する必要があります。

独自のサービスに加えて、Azure DevOps Serverは機能するために他のサービスに依存しています。 これらのサービスの詳細については、「Azure DevOps Server データ ウェアハウスのAzure DevOps Serverの概念とコンポーネント」を参照してください。 インストールの要件と依存関係の詳細については、「Azure DevOps Serverインストール ガイド」を参照してください。

重要

Microsoft サポートによって指示された場合、またはデータベースを手動でバックアップする手順に従っている場合を除き、Azure DevOps Serverデータベースを手動で変更しないでください。 その他の変更を加えると、サービス利用契約が無効になる場合があります。

Azure DevOps Services

Azure DevOps Services

Microsoft では、Azure DevOps Servicesを使用するオプションを提供しています。これにより、Azure DevOps Serverのすべてのサーバー側の側面をホストできます。 ソース コード、作業項目、ビルド構成、およびチーム機能はすべてクラウドでホストされます。 アーキテクチャの観点からは、クライアント コンポーネントとそのインターネット アクセスを考慮する必要があるアーキテクチャの唯一の側面として、Azure DevOps Serverの使用が大幅に簡素化されます。

Azure DevOps Servicesを使用する場合は、Web ブラウザーを使用して、Microsoft アカウントを使用してサービスに接続します。 プロジェクトを作成し、チームにメンバーを追加し、ローカルにインストールされたAzure DevOps Serverと同じように作業できます。サーバーを管理するオーバーヘッドはありません。 Azure DevOps Servicesは、クラウド内のアプリケーション層、データ層、およびビルド サーバーをホストします。

クラウド サービスとオンプレミスのデプロイの詳細については、「Azure DevOps ServicesとAzure DevOps Server」を参照してください。

オブジェクト モデル

ホスト型またはローカルにデプロイされたアーキテクチャを使用すると、サーバーまたはクライアント オブジェクト モデルに基づくアプリケーションを作成することで、Azure DevOps の機能を拡張できます。 すべての配置タイプで、クライアント機能を拡張するアプリケーションを作成できます。 ただし、サーバー機能を拡張する場合は、アプリケーションをアプリケーション層サーバーで実行する必要があります。 クライアント機能を拡張するには、Team エクスプローラーと同じコンピューターでアプリケーションを実行する必要があります。

Azure DevOps Server オブジェクト モデル

ローカル配置用の Web サービスとデータベース

Azure DevOps Serverには、Azure DevOps の論理アプリケーション、データ、およびクライアント層をホストするサーバーに個別にインストールおよび構成する一連の Web サービスとデータベースが含まれています。 タスク ボードやバックログ チームベースの機能など、一部の機能は完全に Web ベースであり、Web ポータル (クライアント側の Web ベースのサービス) を介してのみアクセスされます。 バージョン管理機能などのその他の機能には、Web ポータルまたはクライアント アプリケーションを介してアクセスできます。 次の図は、Azure DevOps Serverのローカル デプロイ用の Web サービス、アプリケーション、データベースの概要を示しています。

Azure DevOps Server メイン サービス レベル

オプションのAzure DevOps Server サービス

Azure DevOps Server クライアント

コレクション レベル サービス

コレクション レベルのサービスは、プロジェクト コレクションのレベルでの操作の機能を提供します。 これらのサービスの一部を使用して、Azure DevOps Serverを拡張するアプリケーションを作成できます。 Azure DevOps Server用アプリケーションの作成の詳細については、「拡張機能の開発」を参照してください。

注意

一部のサービスは、複数のレベルに表示されます。 たとえば、コレクション レベルおよびサーバー レベルのレジストリ サービス機能は、両方の一覧に表示されます。

フレームワーク サービス:

  • レジストリ サービス
  • 登録サービス (以前のバージョンのAzure DevOps Serverとの互換性のため)
  • プロパティ サービス
  • イベント サービス
  • セキュリティ サービス
  • [位置情報]
  • ID 管理サービス
  • バージョン管理 Web サービス
  • 作業項目トラッキング Web サービス
  • Team Foundation Build Web サービス
  • Lab Management Web サービス
  • VMM 管理 Web サービス
  • Test Agent コントローラー Web サービス

サーバー レベルのサービス

サーバー レベルのサービス (アプリケーション レベルのサービスとも呼ばれます) は、ソフトウェア アプリケーションとしてAzure DevOps Server操作の機能を提供します。 これらのサービスの一部を使用して、Azure DevOps Serverを拡張するアプリケーションを作成できます。

フレームワーク サービス:

  • レジストリ サービス
  • イベント サービス
  • Project Collection サービス
  • プロパティ サービス
  • セキュリティ サービス
  • [位置情報]
  • ID 管理サービス
  • 管理サービス
  • コレクション管理サービス
  • カタログ サービス

データ層

データ層には、データ、ストアド プロシージャ、その他の関連ロジックが含まれています。 Azure DevOps Servicesを使用すると、Azure を使用してデータ層SQL Serverホストされます。 Azure DevOps Serverのローカル デプロイでは、論理データ層は、SQL Server内の次の運用ストアで構成されます。 これらのストアは、1 つの物理サーバーに配置されることもあれば、多数のサーバーに分散されることもあります。 これらの運用ストアの一部を使用して、Azure DevOps Serverを拡張するアプリケーションを作成できます。

  • 構成データベース (TFS_Configuration)
  • アプリケーション ウェアハウス (TFS_Warehouse)
  • Analysis Services データベース (TFS_Analysis)
  • プロジェクト コレクションのデータベース (TFS_CollectionName)

次の表に、ローカル デプロイで使用Azure DevOps Serverデータベースの一覧を示します。 特に記載がない限り、この一覧に含まれるすべてのデータベースとインスタンスを元のサーバー (インストールと復元が行われたサーバー) から別のサーバーやインスタンスに移動できます。

データベース名 説明 サーバー
TFS_Configuration このデータベースには、リソースのカタログと、Azure DevOps Serverの構成情報が格納されます。 このデータベースには、Azure DevOps Serverのオペレーショナル ストアが含まれています。 Azure DevOps Serverのインストールと構成時に使用されるSQL Serverのインスタンス。
TFS_Warehouse このデータベースには、レポートのデータが格納されます。 Azure DevOps Serverのインストールと構成時に使用されるSQL Serverのインスタンス。
TFS_Analysis この多次元データベースには、プロジェクト コレクションから集計されたデータが格納されます。 SQL Server Analysis Servicesのインストールと構成時に使用されるSQL Serverのインスタンス。
プロジェクト コレクションのデータベース プロジェクト コレクションごとに 1 つのデータベース。そのコレクション内のすべてのプロジェクトのデータを含みます。 Azure DevOps Serverと互換性のあるSQL Serverのインスタンス。

クライアント層

クライアント層は、サーバー オブジェクト モデルを通じてアプリケーション層と通信し、その層にリストされているのと同じ Web サービスを使用します。 これは、Azure DevOps Serverをローカルにデプロイするか、Azure DevOps Servicesを使用するかに関係なく当てはまります。 クライアント層は、オブジェクト モデルに加えて、VSIP (Visual Studio Industry Partners) のコンポーネント、Microsoft Office 統合、コマンド ライン インターフェイス、およびチェックイン ポリシーのフレームワークで構成されます。

構成

ホストされているサービスは、ローカルに配置されているクライアント サービス、クラウドでホストされているアプリケーション層とデータ層へのインターネット接続によって異なります。 Azure DevOps Serverのローカル展開は、SQL Server、インターネット インフォメーション サービス (IIS)、および Windows オペレーティング システムによって異なります。 選択したトポロジに依存するAzure DevOps Serverは、SQL Server Reporting Servicesまたは SharePoint 製品にも依存する場合があります。 そのため、Azure DevOps Serverの構成情報は、次のいずれかの場所に格納できます。

  • IIS データ ストア。
  • Azure DevOps Serverの構成ファイル。
  • Reporting Services のデータ ソース (TFSREPORTS データなど)。
  • Azure DevOps Server用の構成データベース。 Azure DevOps Server レジストリは、構成データベースの一部です。
  • Windows レジストリ。

さまざまなローカル デプロイ トポロジの例と、これらのリソースが格納されている場所については、「 Simple Topology の例」、「 モデレート トポロジの例」、「 複雑なトポロジの例」を参照してください。 Azure DevOps Serverのローカルデプロイを維持する場合は、これらの構成ソースを考慮する必要があります。 何かの方法で構成を変更するには、複数の場所に格納されている情報を変更する必要がある場合があります。 また、データ層およびクライアント層の構成情報を変更する必要がある場合があります。 Azure DevOps Serverには、管理コンソールと、これらの変更を行うのに役立ついくつかのコマンド ライン ユーティリティが含まれています。 詳細については、「 管理タスクのクイック リファレンス」を参照してください

Active Directory とグループ ID の同期

Azure DevOps が Active Directory ドメインで実行されているローカル デプロイでは、次のいずれかのイベントが発生すると、グループと ID の情報が同期されます。

  • アプリケーション層サーバーが起動します。
  • Active Directory グループが Azure DevOps グループに追加されます。

スケジュールされたジョブで指定されている期間が経過する 既定値は 1 時間で、Azure DevOps Serverのすべてのグループは 24 時間ごとに更新されます。

ID 管理サービス (IMS: Identity Management Services) は Active Directory と同期しており、変更された ID はサーバーからクライアントに反映されます。 既定では、すべてのグループが 24 時間以内に更新されますが、配置のニーズに合わせてこれをカスタマイズすることもできます。 詳細については、「Azure DevOps Serverの信頼とフォレストに関する考慮事項」を参照してください。 Active Directory を使用しないローカル展開については、「ワークグループでのAzure DevOps Serverの管理」を参照してください。

グループおよびアクセス許可

ローカル展開では、Azure DevOps Serverには、プロジェクト、コレクション、またはサーバー レベルで設定できる既定のグループとアクセス許可の独自のセットがあります。 グループまたは個々のレベルで、カスタム グループを作成したりアクセス許可をカスタマイズしたりすることができます。 ただし、Azure DevOps Serverに追加するユーザーまたはグループは、Azure DevOps Serverのローカル展開が依存できる 2 つのコンポーネント (SharePoint 製品とReporting Services) に自動的に追加されません。 展開でこれらのプログラムを使用する場合は、ユーザーとグループを追加し、Azure DevOps Serverのすべての操作でそれらのユーザーまたはグループが正しく機能するように適切なアクセス許可を付与する必要があります。 詳細については、「Azure DevOps Serverでユーザーまたはグループを管理する」を参照してください。

ホストされた配置では、アクセスは Microsoft アカウントとチーム メンバーシップの組み合わせによって制御されます。 詳細については、「Azure DevOps Servicesの概要」を参照してください。

ネットワーク ポートおよびネットワーク プロトコル

既定では、Azure DevOps Serverのローカル デプロイは、特定のネットワーク ポートとプロトコルを使用するように構成されます。 次の図は、単純なデプロイでのAzure DevOps Serverのネットワーク トラフィックを示しています。

シンプルなオンプレミス インストール

同様に、Azure DevOps Serverのホステッド サービスは、特定のネットワーク ポートとプロトコルを使用するように構成されています。 次の図は、ホストされている配置におけるネットワーク トラフィックを示しています。

ホステッド Azure DevOps Server

 

次の図は、Visual Studio Lab Management のコンポーネントを含む、より複雑なデプロイでのネットワーク トラフィックを示しています。 (ラボ管理は TFS 2017 以降のバージョンでは非推奨とされていることに注意してください)。

アプリケーション層

仮想環境

仮想マシン

仮想マシンはポート 80 を使用して、ラボ管理エージェントのダウンロードに関してテスト コントローラーと通信します。 通信に関して問題が発生する場合には、このポートが使用可能かどうかを確認してください。

既定のネットワーク設定

既定では、Azure DevOps のデプロイ内のコンピューター間の通信では、次の表に示すプロトコルとポートが使用されます。 ポート番号の後ろにアスタリスク (*) がある場合は、そのポートをカスタマイズできます。

層およびサービス Protocol Port
アプリケーション層 - Web サービス HTTP/HTTPS 8080/443*
アプリケーション層 – SharePoint 製品管理 HTTP SharePoint 製品がAzure DevOps Serverと共にインストールされた場合は 17012*。それ以外の場合はランダムに生成されます
アプリケーション層 – SharePoint 製品とReporting Services HTTP
Windows Management Instrumentation (WMI) サービス (インストール時に Reporting Services の URL の指定と検証のために必要)
80* 動的ポート
データ層 MS-SQL TCP 1433*
データ層 (SQL Server Analysis Services) MS-AS 既定 (2382 または 2383)*
既定のポートは、インストールした SQL Server のバージョンとインスタンスの種類によって異なります。 配置で使用されるポートを確認するには、SQL Server 構成マネージャーを使用してください。
Azure DevOps プロキシ サーバー - クライアントからプロキシへ HTTP 8081*
Azure DevOps プロキシ サーバー - アプリケーション層へのプロキシ HTTP/HTTPS 8080/443*
クライアント層 - Reporting Services HTTP 80*
クライアント層 - Web サービス HTTP/HTTPS 8080/443*
コントローラーをアプリケーション層 HTTP/HTTPS にビルドする 8080/443
ビルド エージェントからアプリケーション層 HTTP/HTTPS 8080/443
リリース管理サーバー HTTP または HTTPS 1000*
Release Management Client HTTP または HTTPS 1000*
Release Management Agent HTTP または HTTPS 1000*
テスト コントローラーからアプリケーション層 HTTP/HTTPS 8080/443*
アプリケーション層からテスト コントローラー .NET リモート処理 6901*
アプリケーション層からドメイン ネーム システム (DNS) DNS の動的な更新 53
アプリケーション層 – Virtual Machine Manager HTTP 8100
テスト コントローラーからテスト エージェント .NET リモート処理 6910*
テスト エージェントからテスト コントローラー .NET リモート処理 6901*
ビルド コントローラーからビルド エージェント SOAP over HTTP 9191
隔離された環境におけるラボ エージェントからラボ エージェント TCP ソケット 9050
ビルド エージェントからビルド コントローラー SOAP over HTTP 9191
Virtual Machine Manager 管理者コンソール – Virtual Machine Manager HTTP 8100
Virtual Machine Manager – Virtual Machine Manager ホスト アクションを実行するための Windows Remote Management (WinRM)
データを転送するためのバックグラウンド インテリジェント転送サービス (BITS)
アクションの実行には 80
データの転送には 443
Virtual Machine Manager– Virtual Machine Manager ライブラリ サーバー アクションの実行には WinRM
データの転送には BITS
アクションの実行には 80
データの転送には 443
アプリケーション層 – Virtual Machine Manager ホスト データの転送には分散コンポーネント オブジェクト モデル/Windows Management Interface (DCOM/WMI) 通信 135
49152 ~ 65535 の範囲で動的に割り当てます。
クライアント層 – Virtual Machine Manager ホスト 仮想マシンへのホストベース接続。 ホストベースの接続を実行する 2179
ホスト サービス HTTPS 443

カスタマイズできるネットワーク設定

前の表に示すように、カスタム ポートを使用するようにAzure DevOps Serverを変更することで、ローカル デプロイのアプリケーション、データ、およびクライアント層間の通信を変更できます。 HTTP から HTTPS にポートを変更する例を次の表に示します。

注意

HTTPS と Secure Sockets Layer を使用するようにAzure DevOps Serverを構成するには、HTTPS ネットワーク トラフィックのポートを有効にするだけでなく、他の多くのタスクも実行する必要があります。 詳細については、「Azure DevOps Server用の Secure Sockets Layer (SSL) を使用して HTTPS を設定する」を参照してください。

サービス Protocol Port
SSL を使用した Web サービス HTTPS 管理者が設定
SharePoint サーバーの全体管理 HTTPS 管理者が設定
SharePoint 製品 HTTPS 443
Reporting Services HTTPS 443
クライアント Web サービス HTTPS 管理者が設定
リリース管理 HTTPS 管理者が設定