Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Azure DevOps で作成する組織、プロジェクト、チームの数のガイドとして、ビジネス構造を使用します。 この包括的な計画ガイドは、開発ワークフローとビジネス目標を整合させる最適な組織構造を設計するのに役立ちます。
戦略的計画フレームワーク
主要な構造の決定
Azure DevOps の構造をガイドするために、次の基本的な質問に対処します。
組織レベル:
- いくつの組織が必要ですか? - セキュリティ、コンプライアンス、および部署の分離を検討する
- 組織をビジネス ユニットにマップする方法 - エンタープライズ構造とガバナンスのニーズに合わせる
プロジェクト レベル:
- 必要なプロジェクトはいくつですか? - セキュリティと自律性とのコラボレーションのバランスを取る
- プロジェクト マッピング戦略 - プロジェクトをビジネス機能とチーム構造に接続する
チームとリポジトリのレベル:
支援に関する考慮事項
- アクセス管理: どの情報とリソースにアクセスする必要があるかを定義する
- レポート要件: チーム間の可視性とポートフォリオ管理を計画する
- プロセスの標準化: チームの柔軟性を可能にしながら、一貫したプラクティスを促進する
- 文化的整合:アジャイルな考え方とコラボレーション文化を育む
ヒント
よりシンプルな構造から始めて、組織の成長に合わせて進化します。 大規模なプロジェクトを分割する方が、別の組織をマージするよりも簡単です。
Azure DevOps 組織について
Azure DevOps の組織は、プロジェクトの最上位コンテナーとして機能し、課金、セキュリティ、管理の境界を提供します。 組織によって次のことが可能になります。
- 関連するプロジェクトとチーム全体で課金とライセンスを一元化する
- 個別のアクセス制御とポリシーを使用してセキュリティ境界を確立する
- さまざまな部署またはコンプライアンス要件に対して管理上の分離を提供する
- 統合認証のために Microsoft Entra ID などの ID プロバイダーに接続する
組織の特典と無料レベル
各組織には、最大 5 人のユーザー向けの Free レベル サービスが含まれています。
| サービス | 無料枠の特典 |
|---|---|
| Azure Pipelines | 1つのセルフホステッド ジョブに加えて、CI/CD 用のホストされたジョブが 1 か月に 1,800 分提供されます。 |
| Azureボード | プロジェクト管理のための作業項目の追跡とかんばんボード |
| Azure Reposの | ソース管理用の無制限のプライベート Git リポジトリ |
| Azure Artifacts | 依存関係とビルド成果物のパッケージ管理 |
| 利害関係者のアクセス | 無制限の利害関係者が表示および基本的なプロジェクトに参加可能 |
- 最初の 5 人のユーザーが無料 (Basic ライセンス)
-
Azure Pipelines:
- 1 つの Microsoft ホスト型 CI/CD (1 つの同時実行ジョブ、1 か月あたり最大 30 時間)
- 1 つのセルフホステッド CI/CD 同時実行ジョブ
- Azure Boards: 作業項目の追跡とボード
- Azure Repos: 無制限のプライベート Git リポジトリ
- Azure Artifacts:organizationあたり 2 GiB 無料
Note
Azure DevOps クラウドベースのロード テスト サービスは非推奨となりましたが、 Azure Load Testing は引き続き使用できます。 このフル マネージドのロード テスト サービスを使用すると、既存の Apache JMeter スクリプトを使用して高スケールの負荷を生成できます。 詳細については、「 Azure Load Testing とは と Azure DevOps でのクラウド ロード テストと Visual Studio でのロード テスト機能の変更を参照してください。
一般的な組織パターン:
- 単一の組織: ほとんどの企業は、1 つの組織で統合コラボレーションを利用できます
- 事業単位組織: 個別のコンプライアンスまたはセキュリティ要件のために組織を分離する
- 地理的な組織: データ所在地またはローカル ガバナンスの地域分離
いくつの組織が必要ですか?
1 つの組織から始めて 、分離を要求する特定のビジネス要件がある場合にのみ拡張します。
複数の組織の決定基準
必要に応じてさらに組織を作成します。
セキュリティとコンプライアンスの分離:
- さまざまな規制要件 (SOX、HIPAA、PCI-DSS)
- 個別の顧客データ分離要件
- 監査証跡とコンプライアンス レポートを分離する
ビジネス構造の要件:
- 独立した IT ガバナンスを備えた独立したビジネス ユニット
- 請求とコスト センターのさまざまな要件
- 個別の ID プロバイダー接続 (異なる Microsoft Entra テナント)
管理境界:
- 重複のない異なる管理者グループ
- 組織のポリシーとコントロールを分離する
- 独立型サービス レベル アグリーメント
評価フレームワーク
| 要因 | 単一組織 | 複数の組織 |
|---|---|---|
| コラボレーション | 可視性と共有の最大化 | 分離された制限付き組織間共有 |
| 行政 | 一元的でシンプルな管理 | 分散された、より多くの管理オーバーヘッド |
| レポート | 統合されたダッシュボードと分析 | 個別のレポート システム |
| Cost | 単一課金エンティティ | 複数の課金主体 |
| Security | 共有境界、統合ポリシー | 厳格な境界、独立した方針 |
Important
会社所有の Microsoft Entra 組織の場合は、知的財産を保護し、ガバナンスを維持するために 組織の作成を制限 することを検討してください。
チームとは
チームは、チームで構成可能な多くのツール サポートするユニットです。 これらのツールは、作業の計画と管理に役立ち、コラボレーションを容易にします。
個別の製品または機能チームごとにチームを作成する
各チームは独自のバックログを所有しています。 新しいバックログを作成するには、新しいチームを作成します。 チームとバックログを階層構造に構成、プログラム所有者はチーム全体の進行状況をより簡単に追跡し、ポートフォリオを管理し、ロールアップ データを生成できます。 チームを作成すると、チーム グループが作成されます。 このグループは、クエリで使用することも、チームのアクセス許可を設定することもできます。
プロジェクトについて
プロジェクトは、次の統合サービスを含む開発作業のコンテナーを提供します。
- Azure Boards: バックログ、スプリント、作業項目追跡を使用したアジャイル計画
- Azure Pipelines: 継続的インテグレーションとデプロイの自動化
- Azure Repos: ソース コード管理用の Git または TFVC リポジトリ
- Azure Test Plans: 手動および自動テスト統合
- 共有リソース: Wiki、ダッシュボード、およびプロジェクト レベルの設定
次の例では、Contoso Manufacturing は 4 つのプロジェクトを使用して、異なる製品ラインを整理します。
プロジェクトの利点と考慮事項
プロジェクトでは、次の機能が有効になります。
- チーム間で共有されるイテレーション スケジュールと分類
- 一貫性のあるプロセス テンプレートと作業項目の種類
- 統合されたレポートとポートフォリオ管理
- ユーザー管理とアクセス制御の簡素化
プロジェクトは次の境界を提供します。
- セキュリティとアクセス許可
- プロセスのカスタマイズと作業の追跡
- 管理ポリシーとガバナンス
- リソースの割り当てと課金の追跡
必要なプロジェクトはいくつですか?
Azure Boards、Azure Repos、Azure Pipelines などの Azure DevOps サービスの使用を開始するプロジェクトを少なくとも 1 つ用意します。 組織を作成すると、既定のプロジェクトが自動的に作成されます。 既定のプロジェクトには、作業を開始するコード リポジトリ、作業を追跡するためのバックログ、ビルドとリリースの自動化を開始するためのパイプラインが少なくとも 1 つあります。
組織内では、次のいずれかの方法を実行できます。
- 単一プロジェクトを作成して、複数のリポジトリとチームを含める
- 複数プロジェクトを作成して、それぞれに、チーム、リポジトリ、ビルド、作業項目、その他の要素の独自のセットを含める
多数のチームが何百もの異なるアプリケーションとソフトウェア プロジェクトに取り組んでいる場合でも、Azure DevOps の 1 つのプロジェクト内でそれらを管理できます。 ただし、ソフトウェア プロジェクトとそのチームの間でより詳細なセキュリティを管理する場合は、多くのプロジェクトを使用することを検討してください。 最高レベルの分離とは、各組織が 1 つの Microsoft Entra テナントに接続されている組織です。 ただし、1 つの Microsoft Entra テナントは、多くの Azure DevOps 組織に接続できます。
Note
組織で [ ユーザーの可視性とコラボレーションを特定のプロジェクトに限定 する] プレビュー機能が有効になっている場合、 Project-Scoped Users グループに追加されたユーザーは、追加されていないプロジェクトにアクセスできません。 詳細と重要なセキュリティ関連のコールアウトについては、「 組織の管理」、「プロジェクトのユーザーの可視性を制限する」を参照してください。
プロジェクトの意思決定フレームワーク
コラボレーションのニーズに基づいて、適切なプロジェクト構造を選択します。
単一プロジェクトのアプローチ:
- 最適:緊密に協力する小規模な組織またはチーム
- 利点: 最大限の可視性、共有リソース、統合レポート
- 考慮するタイミング: チームは、似たようなリリース サイクルを持つ関連製品に取り組む時
複数のプロジェクトのアプローチ:
- 最適な対象: 個別の要件を持つ独立したチーム
- 利点: セキュリティ境界の向上、カスタマイズ可能なプロセス、チームの自律性
- 検討すべきタイミング: 異なるコンプライアンスニーズまたは個別の事業単位
Azure DevOps では、複数のプロジェクト間で作業を管理するためのプロジェクト間エクスペリエンスが提供されます。
次の場合は、複数のプロジェクトを検討してください。
- 特定の情報へのアクセスの制限または管理
- さまざまな部署のカスタム作業追跡プロセスのサポート
- 独立した管理ポリシーを使用して個別の事業単位をサポートする
- 運用環境のロールアウト前のカスタマイズまたは拡張機能のテスト
Important
Git リポジトリの移植性により、プロジェクト間でリポジトリ (完全な履歴を含む) を簡単に移行できます。 ただし、プッシュ要求やプル要求などの他の履歴をプロジェクト間で移行することはできません。
プロジェクトを事業単位にマップする場合は、会社で単一の組織を取得し、複数プロジェクトを設定して、1 つ以上のプロジェクトで 1 つの事業単位を表すようにします。 会社のすべての Azure DevOps 資産は、この組織内に含まれており、特定の地域 (ヨーロッパなど) 内に配置されます。 プロジェクトを事業単位にマッピングするために次のガイダンスを検討してください。
| 1 つのプロジェクト、複数のチーム | 1 つの組織、複数プロジェクト、チーム | 複数の組織 | |
|---|---|---|---|
| 一般的なガイダンス | 小規模な組織やチームが高度に連携する大規模な組織に最適です。 | 異なる作業で異なるプロセスを必要とする場合に適しています。 | 従来の移行の一部として、および組織間のハード セキュリティ境界に役立ちます。 各組織内の複数のプロジェクトとチームで使用されます。 |
| スケール | 数万人のユーザーと数百のチームをサポートしますが、この規模で、すべてのチームが関連作業に取り組んでいる場合に最適です。 | 1 つのプロジェクトと同じですが、多くのプロジェクトの方が簡単な場合があります。 | |
| Process | チーム間の連携プロセス。ボードやダッシュボードなどをカスタマイズするためのチームの柔軟性。 | プロジェクトごとに独立したプロセス。 たとえば、さまざまな作業項目の種類、カスタム フィールドなどです。 | 複数プロジェクトと同じです。 |
| コラボレーション | さまざまなチームの作業と資産の間で、既定の可視性と再利用が最も高いです。 | 適切な可視性と再利用が可能ですが、意図的かどうかに関係なく、プロジェクト間で資産を非表示にする方が簡単です。 | 組織間の可視性、コラボレーション、再利用が不十分です。 |
| レポートのロールアップとポートフォリオ管理 | チーム全体のロールアップとチーム間の調整力が最も優れています。 | プロジェクト全体で適切なレポートが可能です。 プロジェクト間のロールアップとチームの調整が難しくなります。 | 組織間のロールアップと調整はありません。 |
| セキュリティ/分離 | チーム レベルで資産をロック ダウンできますが、既定はオープンな可視性とコラボレーションです。 | プロジェクト間でロック ダウンする力が優れています。 既定では、プロジェクト内の良好な可視性、プロジェクト全体の良好な分離を提供します。 | 組織間の厳しい境界。分離に優れ、組織間で共有する力は最小限。 |
| コンテキストの切り替え | チームの連携とユーザーの作業切り替えが最も簡単です。 | ユーザーが共同作業を行い、作業間でコンテキストを切り替えるのが比較的簡単です。 | ユーザーが異なる組織で作業する必要がある場合は、難しくなります。 |
| 情報過多 | 既定では、"情報の過負荷" を回避するために、"お気に入り" と同様のメカニズムを使用するユーザーには、すべての資産が表示されます。 | 情報過多のリスクを軽減します。プロジェクトの境界を越えるほとんどのプロジェクト資産が表示されません。 | 組織全体の資産が分離され、情報過多のリスクが軽減されます。 |
| 管理オーバーヘッド | 多くの管理が、個々のチームに委任されます。 ユーザー ライセンスと組織レベルの管理が最も簡単です。 作業間の調整が必要な場合、さらに多くの作業が必要になる可能性があります。 | プロジェクト レベルの管理が多くなります。 オーバーヘッドが増えますが、プロジェクトの管理ニーズが異なる場合に有用です。 | プロジェクトが増えると、管理オーバーヘッドが増え、組織間の柔軟性を向上できます。 |
プロジェクト内でリポジトリとバージョン 管理を構成する
以前に作成した組織の 1 つと、アクセスが必要なユーザーを対象とする特定の戦略的な作業について考えてみましょう。 この情報を使用して、プロジェクトの名前と 作成を行います。 このプロジェクトには、作成した組織で定義された URL があり、〘〘〗〘〗〘 https://dev.azure.com/{organization-name}/{project-name}.
プロジェクトの設定でプロジェクトを構成します。
プロジェクトの管理の詳細については、「 Azure DevOps でのプロジェクトの管理を参照してください。 データを移行することで、プロジェクトを別の組織に移動できます。 プロジェクトの移行の詳細については、 Migration の概要を参照してください。
リポジトリ戦略とバージョン管理
チーム サイズ、製品アーキテクチャ、デプロイの要件に基づいてリポジトリ戦略を構成します。
バージョン 管理システムの選択
Git と Team Foundation Version Control (TFVC) のどちらかを選択します。
Git リポジトリ:
- 最新の開発ワークフローに推奨されるアプローチ
- プロジェクトごとに無制限のリポジトリ
- 柔軟な分岐を使用した分散バージョン管理
- ほとんどの開発ツールおよび CI/CD システムとの統合
Team Foundation バージョン管理 (TFVC):
- 一元化されたバージョン管理システム
- フォルダーベースの組織を持つプロジェクトごとに 1 つのリポジトリ
- 一元化されたワークフローを優先するチームに適しています
ヒント
チームのワークフロー設定が異なる場合、プロジェクトでは Git リポジトリと TFVC リポジトリの両方を使用できます。
リポジトリの組織パターン
Monorepo 戦略:
- おすすめ: 関連サービスを活用して勢いをつける小規模チーム
- 利点: 共有と調整された変更の簡略化
- 課題: チームの成長に伴い、知識の複雑さが増します。意図しないサービスの結合。変更の追跡が困難
個別のリポジトリ戦略:
- 最適なのは: 独立したサービスデプロイを使用する大規模なチームに最適です
- 利点: サービス境界のクリア、オンボードの容易さ、独立したリリース サイクル
- 考慮事項: より多くの初期セットアップが必要ですが、チームの成長に合わせて効果的にスケーリングする
ヒント
小規模なチーム向けの monorepo から始めて、組織の成長と複雑さが増すにつれて個別のリポジトリに移行します。
リポジトリとプロジェクトの配置戦略
複数のリポジトリを持つ 1 つのプロジェクト:
- 最適な対象: リリース スケジュールが調整された製品/サービス
- 利点: 共有プロセス、一貫性のあるアクセス制御、合理化された管理
- 使用するタイミング: 開発者は複数のリポジトリ間で頻繁に作業し、一貫性のあるツールが必要です
専用リポジトリを持つ複数のプロジェクト:
- 最適な条件: 独立したスケジュールまたは個別の要件を持つ製品
- 利点: 独立したカスタマイズ、個別のガバナンス、明確な境界
Note
Git リポジトリの移植性により、完全なコミット履歴を持つプロジェクト間の簡単な移行が可能になります。
リポジトリ組織の決定要因:
- コードの依存関係: 個別にデプロイ可能な製品/サービスを個別のリポジトリに配置する
- 調整のニーズ: 調整された変更が予想される場合は、関連するコードベースを一緒に保持する
- アーキテクチャ: 単一のリポジトリで既存のモノリスを維持する。切断されたサービスを分離する
- チーム アクセス: リポジトリの作成を制御するための適切な アクセス許可管理 を実装する
ヒント
アクセス許可を管理することを検討してください、組織内のすべてのユーザーがリポジトリを作成できません。 リポジトリが多すぎる場合、リポジトリに格納されているコードやその他のコンテンツを所有しているユーザーを追跡するのは困難です。
共有リポジトリとフォークされたリポジトリ
信頼された組織内で共有リポジトリを使用することをお勧めします。 開発者は、互いの変更の分離を維持するのにブランチを使用します。 優れたブランチとリリースの戦略を用いて、1 つのリポジトリで 1,000 人超の開発者の同時開発をサポートできるように拡張できます。 分岐とリリースの戦略の詳細については、「 Adopt a Git branching strategy and Release Flow: Our Branching Strategy」を参照してください。
フォークは、メイン リポジトリを更新するための直接アクセスを持つべきではないベンダー チームと作業する場合に有用です。 フォークは、オープンソース プロジェクトのように、数多くの開発者が頻繁にコントリビューションしないシナリオでも有用です。 フォークを使用する場合は、フォークされたリポジトリをメイン リポジトリから分離するために、別のプロジェクトを維持することをお勧めします。 管理オーバーヘッドが増える可能性がありますが、メイン プロジェクトをよりクリーンに保ちます。 詳細については、 Forks の記事を参照してください。
次の図は、"会社" が組織、プロジェクト、作業項目、チーム、リポジトリを構成する方法のサンプルを示しています。
一時リソースと共有リソースの管理
次のベスト プラクティスを使用して、一時的なリソースと共有リソースを効果的に管理する方法を検討します。
-
一時的な環境: 一時的な環境は有効期間が短く、テスト、開発、ステージングなどのタスクに使用されます。 これらの環境を効率的に管理するには:
- 個別のリポジトリとパイプライン: 一時環境とそれに関連付けられている各リソース (Azure Functions など) には、独自のリポジトリとパイプラインが必要です。 この分離により、環境とそのリソースを同時にデプロイおよびロールバックできるため、必要に応じて簡単に起動および破棄できます。
- 例: Azure Functions、ストレージ アカウント、その他のサービスなど、必要なすべてのリソースを含め、開発環境専用のリポジトリとパイプラインを作成します。
-
共有リソース: 共有リソースは通常、有効期間が長く、複数の環境で使用されます。 多くの場合、これらのリソースのスピンアップ時間が長くなり、コストが高くなります。 共有リソースを効果的に管理するには:
- 個別のリポジトリとパイプライン: Azure SQL Database などの共有リソースには、独自のリポジトリとパイプラインが必要です。 この分離により、一時的な環境でこれらの共有リソースを使用できるため、デプロイの高速化とコスト効率の向上が実現します。
- 例: 複数の一時環境で使用できる Azure SQL Database のリポジトリとパイプラインを作成します。
-
共有インフラストラクチャ リソース: 仮想プライベート クラウド (VPC) やサブネット (ランディング ゾーンとも呼ばれます) などの共有インフラストラクチャ リソースにも、独自のリポジトリとパイプラインが必要です。 この方法により、インフラストラクチャが一貫して管理され、さまざまな環境で再利用できるようになります。
- 例: VPC とサブネット構成のリポジトリとパイプラインを作成します。これは、他のリポジトリやパイプラインから参照できます。
組織構造の詳細
組織の管理者アカウントの種類を選択する
組織を作成するときに、サインインに使用する資格情報によって、組織で使用する ID プロバイダーが定義されます。 Microsoft アカウントまたは Microsoft Entra インスタンスを使用して組織を作成します。 これらの資格情報を使用して、 https://dev.azure.com/{YourOrganization}で新しい組織に管理者としてサインインします。
Microsoft アカウントを使用する
Microsoft Entra ID を使用して組織のユーザーを認証する必要がない場合は、Microsoft アカウントを使用します。 すべてのユーザーは、Microsoft アカウントを使用して組織にサインインする必要があります。 Microsoft アカウントを持っていない場合は、作成します。
Microsoft Entra インスタンスがない場合は、 Azure ポータルから無料で作成するか Microsoft アカウントを使用して組織を作成します。 その後、組織を Microsoft Entra ID に 接続。
Microsoft Entra アカウントを使用する
Azure または Microsoft 365 を使用している場合は、既に Microsoft Entra アカウントを持っている可能性があります。 Microsoft Entra ID を使用してユーザーのアクセス許可を管理する会社で働いている場合は、おそらく Microsoft Entra アカウントを持っている可能性があります。
Microsoft Entra アカウントをお持ちでない場合は、Microsoft Entra ID に サインアップ 組織を Microsoft Entra ID に自動的に接続します。 組織にアクセスするには、すべてのユーザーがそのディレクトリのメンバーである必要があります。 他の組織のユーザーを追加するには、 Microsoft Entra B2B コラボレーションを使用します。
Azure DevOps では、Microsoft Entra ID を使用してユーザーが認証されるため、そのディレクトリ内のメンバーであるユーザーのみが組織にアクセスできます。 そのディレクトリからユーザーを削除すると、ユーザーは組織にアクセスできなくなります。 特定の Microsoft Entra 管理者のみが ディレクトリ内のユーザーを管理するため、管理者は組織にアクセスするユーザーを制御します。
ユーザーの管理の詳細については、「 Manage ユーザー」を参照してください。
組織をビジネス ユニットにマップする
社内の各部署は、独自の Microsoft Entra テナントと共に、Azure DevOps 内の独自の組織を取得します。 チームや進行中の作業に基づいて必要に応じて、個々の組織内でプロジェクトをに設定できます。
大企業では、異なるユーザー アカウント (Microsoft Entra アカウントの可能性が高い) を使用して複数の組織を作成できます。 戦略と作業を共有するグループとユーザーを検討し、それらを特定の組織にグループ化します。
たとえば、架空の Fabrikam 社は次の 3 つの組織を作成しました。
- Fabrikam-Marketing
- Fabrikam-Engineering
- Fabrikam-Sales
各組織には、次のような個別の URL があります。
- https://dev.azure.com/Fabrikam-Marketing
- https://dev.azure.com/Fabrikam-Engineering
- https://dev.azure.com/Fabrikam-Sales
組織は同じ会社を対象としていますが、ほとんど互いに分離されています。 このように何も分離する必要はありません。 ビジネスに意味を持つ場合にのみ境界を作成します。
ヒント
異なる組織を組み合わせるよりも、既存の組織をプロジェクトで簡単にパーティション分割できます。