CI コスト最適化とは? 実践的な定義
CI コスト最適化とは、パイプラインを遅くしたり信頼性を下げたりせずに、その実行コストを削減する規律です。
CI コスト最適化はテストを止めたり check を飛ばしたりすることではありません - 無駄を取り除くことです。目標は、速度と信頼性を維持(または向上)しながら、課金される分を減らし、1 分あたりの支払いを下げることです。良い知らせは、CI 支出の大半が無駄なので、成果は大きく、トレードオフをほとんど必要としないことです。
cache で繰り返しの作業を省く
最も効果の高いレバーは、依存関係、build の出力、Docker のレイヤーを cache して、各実行が変更されていない作業をやり直さないようにすることです。3 分のインストールを 20 秒に削れば、あらゆる実行、毎日、あらゆる branch で節約になります。
runner を適切なサイズにする
runner を job に合わせましょう。job が I/O バウンドで core を飽和させないなら、2-core の 4 倍を課金する 8-core runner は無駄です。逆に、実行時間を倍にする小さすぎる runner は、速く終わる大きな runner より分で高くつくことがあります。
冗長な実行をなくす
path filter と concurrency の制御を使い、無関係な変更がパイプライン全体をトリガーしないようにし、素早い push では追い越された実行をキャンセルしましょう。job を実行しないことが、最も安い最適化です。
flaky な再実行をなくす
flaky なパイプラインは、誰かが再実行するたびに同じ作業を 2 回課金します。flaky なテストを安定させるか、一時的な失敗を自己修復するプラットフォームを使うことで、ほとんどのチームが単に常態化してしまったコストを取り除けます。
1 分あたりの単価を下げる
上記のすべては分を減らします。単価はもう 1 つの乗数です。プレミアムなホスト型の単価から、素の compute コストに近いマネージド runner に移行すれば、残るあらゆる分が削減されます。Latchkey のマネージド runner は同じ workflow を GitHub ホストより約 70% 安く実行します。
前後で測定する
測定のない最適化は当て推量です。build あたりと deploy あたりのコストを追跡し、支出をチームに割り当て、傾向を見守りましょう。/learn/github-actions-cost-calculator の計算ツールは、あなたの分と runner の構成を具体的な節約の見積もりに変えます。
重要なポイント
- CI コスト最適化は、デリバリーを遅らせずに無駄を取り除きます。
- caching、適切なサイズ化、冗長な実行の回避が、課金される分を削減します。
- flaky な再実行は常態化した無駄です - 自己修復がそれを取り除きます。