Skip to content
Latchkey

重いCIジョブ向けGitHub Larger Runnersの代替

GitHub larger runnersは「自分のbuildにもっとcoreが必要」という問題をネイティブに解決します。代替を探す最も一般的な理由は、ボリューム時の1分あたりのコストです。

GitHub larger runnersは、より多くのcore、RAM、ディスクを備えたマネージドVMで、GitHubのドキュメントによればGitHub TeamおよびEnterprise Cloudプランで利用できます。ファーストパーティのオプションを望み、サードパーティのセットアップをゼロにしたい場合に最適です。重いジョブを頻繁に実行する場合、(GitHubによれば含まれる無料分の割り当てがない)1分あたりの料金が、チームが代替を検討する理由になることが多いです。Latchkeyは、同じジョブサイズをより低い1分あたりの料金で対象とし、自己修復を追加するマネージドrunnerの代替です。GitHubの最新の料金は同社のサイトで確認してください。

ひと目で比較

機能GitHub larger runnersLatchkey
標準runnerより多くのcoreありあり
含まれる無料分が適用されるなし(GitHubのドキュメントによる)無料枠あり
自己修復CI(一時的な失敗の自動リトライ)なしあり
セットアップRunner group + カスタムlabelruns-on labelの入れ替え
ファーストパーティのGitHub統合最も深い標準
得意分野ネイティブな大型マネージドVM自己修復 + 低コストのマネージドrunner

GitHub larger runnersが得意なこと

GitHubにネイティブで、サードパーティのベンダーを必要とせず、runner group、autoscaling、並行実行制御、(Enterprise Cloudでは)静的IPレンジと深く統合します。GitHubのドキュメントによれば、ARM64で最大64 vCPU、x64で最大96 vCPUまでのサイズに加え、GPUおよびARMのオプションもあります。出典: https://docs.github.com/en/actions/reference/runners/larger-runners および https://docs.github.com/en/actions/using-github-hosted-runners/using-larger-runners/about-larger-runners。

Latchkeyが追加するもの

Latchkeyは自己修復CIを中心に構築されています。メモリ不足によるkill、ディスクフルのエラー、registryのタイムアウトが自動的に検出・リトライされるため、再実行にお金を払わずに済みます。それをより低い1分あたりのコストのマネージドrunnerと、ドロップインのruns-on入れ替えと組み合わせており、runner groupやlabelの管理の負担もありません。

どちらを選ぶか

  • ファーストパーティのオプション、最も深いGitHub統合、またはrunner向けの静的IPレンジのようなEnterprise Cloudの機能が欲しいなら、GitHub larger runnersを選びましょう。
  • 重いジョブでより低い1分あたりのコストに加え、不安定な再実行を自動的に取り除く自己修復が欲しいなら、Latchkeyを選びましょう。

結論

たまに実行する重いジョブでネイティブ統合が最も重要な場合、GitHub larger runnersは堅実なファーストパーティの選択肢です。1分あたりのコストと不安定な再実行が積み重なる頻繁で重いbuildには、Latchkeyのほうが適しています。無料で始めて、実際のpipelineで両方をベンチマークしてください。

よくある質問

GitHub larger runnersはLatchkeyのような代替より安いですか?
GitHubの料金ドキュメントによれば、larger runnersは含まれる無料分の割り当てなしで1分あたり課金され、サイズが大きくなると料金が上がります。Latchkeyは同等のサイズでより低い1分あたりの料金を目指しますが、正しい比較はあなた自身のbuildに対して行うものです。GitHubの最新の料金は https://docs.github.com/en/billing/reference/actions-runner-pricing で確認してください。
代替への切り替えはリスクがありますか?
Latchkeyは標準のGitHub Actions runnerを使うため、変更はほぼruns-on labelだけです。1つのworkflowでパイロットして比較し、必要ならlabelを戻すだけでロールバックできます。

関連ガイド