CI/CDコストとRunner効率の最適化
Runnerのサイズを適正化し、無駄な実行時間を削減し、キャッシュを最適化し、ビルドあたりのコストを測定して、パイプラインの支出とリソースの無駄を減らします。
「CI/CDコストとRunner効率の最適化」はCoddyKit上の無料CI/CD with GitHub Actions & DevOps Pipelinesレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCI/CD with GitHub Actions & DevOps Pipelines学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。
コストはDevOpsの指標
速度と信頼性は注目されますが、コストも同じように重要です。CI/CDの実行時間、runnerの計算リソース、クラウドからのデータ転送は、特に大規模になるとすべて積み重なります。
コストを第一級の指標として扱うことで、チームの成長に伴ってもパイプラインを持続可能にできます。
コストの内訳
CI/CDにおける主なコスト要因は次のとおりです。
- 消費したrunnerの実行時間の合計
- runnerのサイズ(大きいマシンほど1分あたりのコストが高くなります)
- 冗長なビルドや重複したビルド
- 遅いキャッシュ、またはキャッシュがないこと
それぞれを最適化すれば、開発のスピードを落とさずに請求額を減らせます。
runnerの適正サイズ選択
大きいrunnerはより速く完了しますが、1分あたりのコストは高くなります。最も安価なのは、制限時間内に処理を完了できる最小のrunnerです。
異なるサイズでジョブのベンチマークを行い、単に最速のものではなく、ビルドあたりのコストが最もよいものを選んでください。
jobs:
build:
runs-on: ubuntu-latest # vs larger paid runners不要になった実行をキャンセルする
開発者が短時間に2回pushすると、通常は最初の実行が無駄になります。進行中の実行をキャンセルするConcurrencyを設定すれば、古い実行を自動的に停止できます。
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueタイムアウトの設定
ハングしたジョブは、プラットフォームのデフォルト制限に達するまで実行時間を消費し続ける可能性があります。必ずtimeout-minutesを設定し、暴走したジョブを迅速かつ低コストで失敗させてください。
build:
runs-on: ubuntu-latest
timeout-minutes: 15不要な処理を省く
パスフィルターと変更検出を組み合わせ、影響を受けるジョブだけを実行します。最も安価な1分間とは、そもそも使わずに済んだ1分間です。
また、ドキュメントのみを変更したコミットではpaths-ignoreを使ってCI自体をスキップしてください。
on:
push:
paths-ignore:
- '**.md'キャッシュで計算量を削減する
優れたキャッシュを使えば、数分かかる依存関係のインストールを数秒に短縮できます。ジョブが速くなれば、課金対象の実行時間も減ります。
ロックファイルを正確にキーとしてキャッシュし、有効性を保ちながら常に最新の状態にしてください。
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}並列実行と直列実行のトレードオフ
並列ジョブはより早く完了します(リードタイムが短くなります)が、合計の実行時間は同じか、それ以上になる場合があります。直列ジョブは同時に使用するrunnerが少なくて済みますが、完了まで時間がかかります。
速度とコストのどちらを最適化するかに応じて、両者のバランスを取ってください。
セルフホストのコスト
実行量が多い場合、独自のインフラ上でセルフホストrunnerを運用すると、ホステッドrunnerより1分あたりのコストを抑えられる可能性があります。ただし、保守とセキュリティの負担が増えます。
損益分岐点を計算してください。固定のインフラコストと、ホステッドrunnerの1分あたりのコストに月間実行時間を掛けた金額を比較します。
ビルドあたりのコストを測定する
測定しなければ最適化できません。時間の経過に伴うワークフローあたりの実行時間とマージされたPRあたりのコストを追跡してください。
GitHubの請求・使用状況レポートと、エクスポートした実行時間を使えば、シンプルなコストダッシュボードを作成できます。
コストとDORAのバランス
品質を犠牲にしてコストを削減してはいけません。目標は効率化です。DORAメトリクス(デプロイ頻度、変更のリードタイム、障害からの復旧時間、変更失敗率)を高い水準に保ちながら、無駄を削減します。
最適化されたパイプラインは、高速で信頼性が高く、かつ経済的です。
確認テスト
パイプラインのコスト最適化についての理解度を確認しましょう。
まとめ
パイプラインをコスト効率の高いものにする方法を学びました。
- runnerのサイズを適正化し、
timeout-minutesを設定します - 不要になった実行をキャンセルし、不要な処理を省きます
- 積極的にキャッシュを使って計算リソースの消費を削減します
- ビルドあたりのコストを測定し、DORAメトリクスとのバランスを取ります
効率化とは、高速で信頼性が高く、かつ手頃なコストで提供することです。
よくある質問
「CI/CDコストとRunner効率の最適化」レッスンは無料ですか?
はい。「CI/CDコストとRunner効率の最適化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CI/CD with GitHub Actions & DevOps Pipelinesコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。
「CI/CDコストとRunner効率の最適化」で何を学びますか?
Runnerのサイズを適正化し、無駄な実行時間を削減し、キャッシュを最適化し、ビルドあたりのコストを測定して、パイプラインの支出とリソースの無駄を減らします。 ブラウザで直接実行するハンズオンコードでCI/CD with GitHub Actions & DevOps Pipelinesを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
CI/CD with GitHub Actions & DevOps Pipelinesを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCI/CD with GitHub Actions & DevOps Pipelinesは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「CI/CDコストとRunner効率の最適化」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCI/CD with GitHub Actions & DevOps Pipelinesレッスンでコードを書いて実行できますか?
はい。すべてのCI/CD with GitHub Actions & DevOps Pipelinesレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- DORA メトリクスと CI/CD の健全性
- パイプラインのパフォーマンスチューニング
- DevOps 自動化の今後のトレンド
- CI/CDコストとRunner効率の最適化