ベスト 統合プラクティス

Azure DevOps Services

サービス間のツールと統合により、Azure DevOps Services の効率が向上します。 注意しないと、自動化されたツールが制御を外れて、高率の要求を実行する可能性があります。 要求により、Azure DevOps によって組織にレート制限が適用されます。 レート制限に達するリスクを軽減するために、REST API を使用して Azure DevOps と統合する場合は、次のベスト プラクティスに従ってください。

アクション可能な作業項目のみをプッシュする

アクション可能な項目のみを Azure DevOps にプッシュし、チームが今後取り組むか対処する予定です。 必要になるまで作業項目を Azure DevOps から除外します。 たとえば、Azure DevOps にテレメトリ データを格納しようとしないでください。

独自のデータ ストアを管理する

作業項目をすべて 1 か所に配置するために、作業項目を Azure DevOps に追加しないでください。 Azure DevOps Services は、データ ストレージ サービスとして設計されていません。 独自のデータ ストアを管理します。

変更をバッチ処理する

単一の操作を実行すると、パフォーマンスの問題とレート制限の主な原因である、低速でコストがかかります。 変更を 1 回の呼び出しにバッチ処理します。 詳細については、バッチ ドキュメントサンプル コードを参照してください。

リビジョンを制限する

1 つの作業項目に対する多くのリビジョンによって肥大化が発生し、パフォーマンスの問題が発生します。 次のタスクを実行することをお勧めします。

  • フィールドの変更をバッチ処理して、更新を減らします。 一度に 1 つのフィールドだけを更新しないでください。
  • 複数の作業項目に変更がある場合は、それらの変更を 1 つのアクションにバッチ処理します。
  • リビジョンの制限を回避するには、リビジョンの数を最小限に抑えます。

Note

作業項目のリビジョン制限 10,000 は、REST API を使用して行われた更新に対して有効です。 この制限により、REST API からの更新が制限されますが、Web ポータルからの更新は影響を受けません。

クエリの最適化

クエリを最適化して、わずかな数の結果を返します。 複雑な条件とフィルターは、実行時間の長いクエリにつながる可能性があります。 しきい値のエラーを回避するために、クエリの実行時間を 30 秒以下にしてください。

クエリのパフォーマンスに関するヒント

  • 可能な限り、クエリの先頭付近に日付または範囲制限句を配置します。
  • Ever 演算子を使用する句の数を減らします。
  • Tags を除き、Contains 演算子を使用する句の数を減らします。
    • 使用可能な場合は、 Contains Words 演算子を使用します。
    • 長いテキスト フィールドでは 、コストがかかるため、Contains 演算子を使用しないでください。
  • 可能な場合は、'<>' 演算子ではなく演算子を使用しないでください。
  • 大規模なグループには In Group 演算子を使用しないでください。
  • Or 演算子の数を最小限に抑え、使用する前に最上位レベルのスコープを確保します。
  • In Group 演算子と Area または Iteration Paths の間で OR 句を使用しないでください。
  • 可能な限り、目標を達成するために、句全体の数を減らします。
  • 可能な場合は、ID などのコア フィールド以外で並べ替えを行わないでください。
  • ユーザー設定フィールドで並べ替える場合は、フィルターでユーザー設定フィールドを使用します。
  • 可能であれば、プロジェクトを指定します。 それ以外の場合、クエリはコレクション全体にスコープを設定し、必要以上に時間がかかる可能性があります。 クエリ エディターの "右上隅にあるプロジェクト間のクエリ" をチェック解除します。

複数プロジェクトにわたるクエリ

  • クエリでプロジェクト間の検索が必要な場合は、探しているプロジェクトを指定します。
  • 文字列の一部のテキストを検索する場合を除き、可能な場合は、キーワード (keyword)の代わりにタグを使用します。

エラーを適切に処理する

リソースの制限または使用率の頻度が制限しきい値を超えると、更新とクエリは失敗します。 たとえば、30 秒を超えるクエリを実行すると、次のエラーが返されます。

VS402335: The timeout period (30 seconds) elapsed prior to completion of the query or the server is not responding.

REST API を使用する場合は、エラーを適切に処理するようにコードを設計してください。

リンク制限の適用を回避するために、作業項目あたりのリンク数を可能な限り制限します。

重要

近い将来、作業項目のリビジョンとリンクの制限を適用する予定です。 これらの制限は、パフォーマンスの監視とお客様からのフィードバックによって決まります。

レポートにクエリを使用しない

クエリと個々 の作業項目 の取得呼び出しを使用することは、組織に適用されるレート制限を取得する最も一番の方法です。 大量の作業項目の一覧を返すクエリを実行しないでください。 代わりに、レポート作業 項目リンク作業項目リビジョン REST API を使用してください。

詳細については、GitHub の C# サンプルを参照してください