Skip to content
Latchkey

無駄なCI支出とは? 何の対価もなく支払っているminuteを見つける

無駄なCI支出とは、CI請求のうち何の価値も買わない部分です - 作業のやり直し、アイドリング、あるいは実行する必要のなかったjobの実行に支払われるminuteです。

ほとんどのCI請求は、必要以上に大きくなっています。作業が高価だからではなく、その多くが無駄だからです。無駄な支出を特定することは、請求を下げる最速の道です。それを削ることは、実際の能力を一切失うことなくコストを取り除くからです。

コールドスタートの無駄

依存関係を再ダウンロードしたり、ゼロから再buildしたりする実行はすべて、cacheできたはずのセットアップに支払っています。2分のコールドインストールを月に数千回の実行で掛け算すれば、無駄なminuteは相当なものになります。

flakyな再実行の無駄

flakeしたためにjobを再実行することは、同じ作業を二重に課金します。10%の再実行率は、コンピュートのおよそ10%を何の対価もなく支払っていることになります。これは最大かつ最も無視されがちな無駄の1つです。

アイドルな余裕の無駄

「念のため」に予約された過大なrunnerは、アイドルなコアに割増料金を払います。I/Oバウンドなjobで2コアの4倍を課金する8コアrunnerは、4分の3が無駄です。

冗長な実行の無駄

無関係な変更によってトリガーされるpipeline、同じものを再テストするmatrixのレッグ、キャンセルされなかった置き換え済みの実行は、いずれも何の利点もなくminuteを燃やします。path filterとconcurrency制御がそれらを排除します。

キューとオーバーヘッドの無駄

一部のプラットフォームでは、runnerを待つ間も支払いが発生し、セットアップのオーバーヘッドがすべてのjobを膨らませます。これらのminuteは何も生み出さないのに、請求書には現れます。

無駄を削る

cacheし、適正サイズにし、トリガーをフィルタし、flakyな再実行を潰します。それから残ったものについてレートを下げます。Latchkeyのmanaged runnerは、同じワークロードをおよそ70%安く実行し、コールドスタートの無駄を消すwarm poolと、flakyな再実行の無駄を消す自己修復を備えています。/learn/github-actions-cost-calculatorで無駄を見積もりましょう。

重要なポイント

  • 無駄なCI支出とは、何の価値も生まない、支払われたminuteです。
  • コールドスタート、flakyな再実行、アイドルな余裕、冗長な実行が主な原因です。
  • その大半は、能力を失うことなく取り除けます。

関連ガイド