スケーリングを構成する
重要
マネージド DevOps プールは現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。
マネージド DevOps プールのパフォーマンスとコストを管理するようにスケーリング設定を構成します。 価格とパフォーマンスの詳細については、「コストとパフォーマンスの管理」を参照してください。
エージェントの状態
マネージド DevOps プールは、ステートレスまたはステートフルとして構成できます。
- ステートレス プール - すべてのジョブに新しいエージェントを提供します。
- ステートフル プール - 複数のジョブ間でのエージェントの共有を許可します。
Managed DevOps プールの既定の設定はステートレス (毎回新しいエージェント) ですが、以前のパイプラインの実行中に作成されたパッケージまたはファイルを再利用するために、チームがエージェントを再利用したい場合があります。 ビルド ワークロードは、チームが状態を保持してエージェントを再利用する一般的なシナリオです。 マネージド DevOps プールを使用してステートフル プールを実現しながら、セキュリティのベスト プラクティスとバランスを取ることができます。 既定では、エージェントは最大 7 日間再利用できますが、より早くリサイクルされるように構成できます。
Note
ステートレス プールまたはエージェントの状態設定 を毎回 Fresh エージェントを使用することは、サプライ チェーン攻撃に対する防御としてセキュリティ専門家によって推奨されます。
ステートレス プール
ステートレス エージェントを構成すると、ジョブごとに新しいエージェントが調達され、ジョブの完了後に破棄されます。
エージェントの状態が毎回 Fresh エージェントに設定されると、ジョブごとに新しいエージェントが調達され、ジョブの完了後に破棄されます。
ステートフル プール
複数のビルド ("kind": "stateful"
リソース テンプレートまたは { "stateful": {...} }
Azure CLI) で同じエージェントを使用できる場合、プール内のエージェントはステートフルと見なされます。 ステートフル プールは、次の設定を使用して構成されます。
スタンバイ エージェント の最大有効期間 (
maxAgetLifetime
) は、ステートフル プール内のエージェントがシャットダウンおよび破棄されるまでに実行できる最大期間を構成します。 スタンバイ エージェントの最大有効期間の形式は次のとおりですdd.hh:mm:ss
。 スタンバイ エージェントの最大有効期間の既定値は、7 日間 (7.00:00:00
) の最大許容期間に設定されます。猶予期間 (
gracePeriodTimeSpan
) は、ステートフル プール内のエージェントが新しいジョブを待機してから、現在およびキューに置かれたすべてのジョブが完了した後にシャットダウンする時間を構成します。 猶予期間の形式は、dd.hh:mm:ss
既定値は猶予期間なしです。
ステートレス プール内のエージェントはシャットダウンされ、すべてのジョブの後に破棄されますが、ステートフル プール内のエージェントは、次のいずれかの条件が満たされた場合でも実行を続行します。
- 最初のジョブが完了したときに別のジョブがキューに登録されている場合、Managed DevOps Pools はそのジョブをシャットダウンするのではなく、最初のジョブを実行したエージェントに送信します。
- プールに対して猶予期間が構成されている場合、エージェントは猶予期間で指定された期間、新しいジョブを待機してからシャットダウンします。
- スタンバイ エージェントが有効になっていて、エージェント イメージがアクティブなプロビジョニング期間の条件を満たしている場合、エージェントは引き続き実行され、ジョブを待機します。
ステートフル プール内の実行中のエージェントは、前の条件が満たされている場合でも、スタンバイ エージェントの最大有効期間で指定された期間継続的に実行されるとシャットダウンされ、破棄されます。 たとえば、スタンバイ エージェントの最大有効期間が 3 日間構成されていて、スタンバイ エージェント モードが手動、すべての週のスキーム (24 時間 365 日利用可能なマシン) に設定されている場合、エージェントは 3 日間の連続アップタイム後に再起動されます。
重要
猶予期間がなく、スタンバイ エージェントのアクティブなプロビジョニング期間がなく、エージェントと一致するキューに登録されたジョブがない場合、ジョブの完了後も、ステートフル プール内のエージェントをシャットダウンおよび破棄できます。 エージェントが破棄されると、すべての状態が失われます。
猶予期間により、一貫した負荷でパイプラインのステートフル プールを実行する最もコスト効率の高い方法が可能になり、エージェントをオンラインに保ち、ジョブを受け入れる準備をするためにスタンバイ エージェント モードを使用する必要はありません。
スタンバイ エージェント モード
プールを作成すると、 スタンバイ エージェント モード は既定でオフになり、パイプラインにすぐに割り当てるスタンバイ エージェントはありません。必要に応じてエージェントをプロビジョニングするには、しばらく (最大 15 分) 待機する必要があります。 パフォーマンスを向上させるには、スタンバイ エージェント モードを有効にし、ワークロードの容量を提供するスタンバイ エージェント スケジュールを構成します。
- [オフ] - スタンバイ エージェント モードがオフになり、ジョブがキューに登録されると、エージェントがオンデマンドでプロビジョニングされます。
- 手動 - 手動スタンバイ スケジュールを構成します。
- 自動 - エージェントの使用履歴に基づいて自動スタンバイ スケジュールを使用し、コストとパフォーマンスのために構成できます。
手動
手動モードは、CI/CD パイプラインの使用パターンに関する知識を持つチームに最適です。 手動オプションを選択する場合は、プール内のエージェントが使用される可能性が最も高い時期と使用される可能性の高いエージェントの数を把握し、予測される需要を満たすエージェントのプロビジョニング数を指定して、事前プロビジョニングスキームを定義する必要があります。
独自のプロビジョニング スケジュールを作成することも、定義済みのスケジュールから選択することもできます。また、スケジュールの指定に使用するタイム ゾーンを構成することもできます。 事前プロビジョニング TimeZone の既定値は (UTC) 世界協定時刻です。
ヒント
スキームのプロビジョニング数は、プール設定で構成されている Maximim エージェントより大きくすることはできません。
Managed DevOps プールでは、数分ごとに、ジョブを待機しているアクティブなエージェントの数と、ジョブを待機しているスタンバイ エージェントの数がチェックされ、現在のプロビジョニング スキームで指定されているエージェントのプロビジョニング数が使用可能であることを確認します。 現在のプロビジョニング数が 10 で、ジョブを実行しているエージェントが 5 つあり、スタンバイ上にエージェントが 2 つある場合、Managed DevOps プールは 3 つの追加スタンバイ エージェントを開始して、エージェントの合計数を最大 10 にします。
手動スタンバイ エージェントの構成は、次の 3 つの方法のいずれかで構成できます。
- 最初 から開始する - スタンバイ エージェントのプロビジョニング期間のセットを構成する
- Weekday スキーム (各平日の期間中に利用可能なマシン) - スタンバイ エージェントを平日ごとに使用できるように開始時刻と終了時刻を構成する
- All Week スキーム (24 時間 365 日利用可能なマシン) - 一定の数のスタンバイ エージェントを継続的に使用できるように構成する
各事前プロビジョニング クイック スタートには、そのクイック スタートの特定の設定に加えて、次の一般的な設定があります。
- TimeZone を事前プロビジョニングすると、事前プロビジョニング スキームの時刻のタイム ゾーンを構成できます。 事前プロビジョニング TimeZone の既定値は (UTC) 世界協定時刻です。
- スタンバイ エージェントの割合 は、イメージごとに必要なスタンバイ エージェントの割合を構成します。 すべてのイメージが均等にプロビジョニングされるように入力
*
するか、0 ~ 100 の整数を指定してパーセンテージを表すことができます。 パーセンテージを指定する場合、すべての画像の合計は 100 に等しい必要があります。 1 つのイメージがある場合は、100 を指定*
します。 ARM テンプレートを使用する場合、スタンバイ エージェントのimages
割合はセクションで構成されます。 詳細については、「イメージの構成」を参照してください。
ゼロから始める
最初から開始する場合は、プロビジョニングスキームとして機能するプロビジョニング期間の一覧を追加できます。 各プロビジョニング期間は、開始日、終了日、タイム ゾーン、開始時刻、終了時刻、カウントで構成されます。 プロビジョニング期間は互いに重複することはできません。
プロパティ | 説明 |
---|---|
複数の日 | オンにすると、プロビジョニング スキームの開始日と終了日の両方を構成できます。 |
次の期間まで | オンにすると、プロビジョニング期間は開始時刻から次のプロビジョニング期間の開始まで実行されます。 |
開始日 | プロビジョニング期間が開始される日。 |
終了日 | プロビジョニング期間が終了する日。 [複数日] がオンの場合は必須。 |
Start Time | プロビジョニング期間が開始される時間。 |
End Time | プロビジョニング期間が終了する時刻。 [次の期間まで] がオンでない限り必須。 |
カウント | プロビジョニングするスタンバイ エージェントの数。 この数は 0 より大きく、プール設定で構成されている最大エージェント値より大きくすることはできません。 |
プロビジョニング期間を作成した後、事前プロビジョニングスキームの一覧から期間を削除または編集できます。
次の例では、月曜日の午前 12:00 から午前 5:00 EST に 1 つのエージェントがプロビジョニングされた手動スキームを構成します。
平日のスキーム
曜日スキームを選択した場合は、開始時刻と終了時刻を指定できます。この開始時刻と終了時刻では、指定した数のスタンバイ エージェントが平日ごとにスタンバイ状態になります。
プロパティ | 説明 |
---|---|
Start Time | プロビジョニング期間が開始される時間。 |
End Time | プロビジョニング期間が終了する時刻。 |
プロビジョニング数 | プロビジョニングするスタンバイ エージェントの数。 この数は 0 より大きく、プール設定で構成されている最大エージェント値より大きくすることはできません。 |
次の例では、東部標準時を使用して、非稼働時間と週末に 0 個のエージェントを使用して、勤務時間中に使用する 4 つのエージェントを構成します。
すべての週のスキーム
すべての週のスキームを選択した場合は、24 時間 365 日利用可能なエージェントの数を指定できます。
自動
使用パターンがわからない場合に、過去のデータに基づく自動予測に依存する場合は、[自動] を選択します。 スライダーと次の 5 つのオプションを使用して、コストとエージェントのパフォーマンスのバランスを取ることができます。 Managed DevOps Pools は、過去 3 週間の履歴データ (使用可能な場合) に対してクエリを実行し、プールのキューに登録されたセッションを 5 分の期間に整理し、指定されたパーセンタイル (スパイクを回避するために) を各時間に割り当てます。
- 最もコスト効率の高い (
MostCostEffective
) - 10 パーセンタイル - コスト効率の高い (
MoreCostEffective
) - 25 パーセンタイル - バランス (既定) (
Balanced
) - 50 パーセンタイル - パフォーマンスの向上 (
MorePerformance
) - 75 パーセンタイル - 最適なパフォーマンス (
BestPerformance
) - 90 パーセンタイル
過去 1 週間または 7 日間の平均内の特定の日の予測された使用状況と実際の使用状況を表示できます。