Skip to content
Latchkey

CIのキュー時間のコストとは?Runnerを待つ

CIのキュー時間とは、jobがトリガーされてから実際にrunnerがそれを拾い上げるまでの待ち時間です - 直接請求されない場合でも生産性のコストがかかります。

キュー時間は、請求書ではなく生産性の中に隠れているCIコストの一部です。runnerが不足していると、jobは待ち、リリースは滞り、開発者はコンテキストスイッチをします。プラットフォームによっては待ち時間に対して支払いさえ発生します。キューのコストを理解することで、遅いCIが本当にいくらかかるのかという全体像が完成します。

キューを引き起こす原因

キュー時間は、利用可能なrunnerよりもjobが多いときに発生します。同時実行の制限、上限のあるself-hostedフリート、またはcold-startのプロビジョニング遅延です。capacityが空くか新しいrunnerが起動するまで、jobはキューに入ったままになります。

直接コスト

ほとんどのhostedプラットフォームでは、キューにいる間は請求されませんが、一部のself-hostedや予約された構成では、あなたが待っているcapacityはすでにコストになっています。いずれにせよ、キューを避けるためにサイズ設定されたアイドルの予約capacityは、実際の費用です。

間接コスト

より大きなコストは人的なものです。キューに入ったbuildを待つ開発者はコンテキストスイッチをするか、手が空いてしまいます。キューの後ろでブロックされたリリースは、遅れて出荷されます。チーム全体では、キューによる遅延はあらゆる直接請求をはるかに上回ることがあります。

capacityのトレードオフ

runnerを過剰プロビジョニングすることでキューをなくすことはできますが、それはキューのコストをアイドルコストと引き換えにします。目標は、ほとんど使われない大きなフリートに支払うことなく、キューを短く保つのに十分なcapacityを持つことです。

キューのコストを測定する

jobごとのキュー滞在時間と、待機する実行の割合を追跡しましょう。意味のあるキュー遅延に開発者の時間とリリースへの影響を掛け合わせ、CIの請求書には決して現れない間接コストを見積もりましょう。

キュー時間を削減する

マネージドのウォームプールは、アイドルの無駄なしにキューを解決します。Latchkeyは事前初期化されたrunnerのプールを準備しておき、jobがほぼ即座に開始できるようにし、需要に合わせてcapacityをスケールします - キューのコストとアイドルフリートのコストの両方を、GitHub-hostedのレートより約70%低い価格で回避できます。

重要なポイント

  • キュー時間とは、jobがrunnerを得るまでの待ち時間です。
  • キューに対する直接請求はまれで、本当のコストは失われた生産性です。
  • 過剰プロビジョニングでキューをなくすことは、それをアイドルコストと引き換えにするだけです。

関連ガイド