spot instance runnerとは?安価で中断可能なCI
spot instance runnerは、割引された中断可能なクラウド容量上で動作します - on-demandよりずっと安価ですが、プロバイダはほとんど予告なくマシンを回収できます。
クラウドプロバイダは余剰容量を大幅な割引で「spot」インスタンスとして販売しますが、いつでも回収されうるという注意点があります。慎重に使えばspot runnerはCIのコンピュートコストを劇的に削減しますが、不注意に使うとビルドを不安定にします。
spot料金の仕組み
spotインスタンスはプロバイダの余剰容量をon-demandに対する大幅な割引で使います。トレードオフはプリエンプションです。プロバイダが容量を取り戻す必要があるとき、短い予告(通常は数分)の後にインスタンスを回収します。
プリエンプションのリスク
runnerがjobの途中でプリエンプトされると、そのjobは中断されます - 通常はSIGTERM(exit 143)と失敗したstepとして現れます。対処しなければ、これはまさに不安定なビルドのように見え、CIへの信頼を損ないます。
spotを安全に使う方法
- リトライ可能でべき等なjobだけをspotで実行する(ほとんどのCIテストが該当する)。
- プリエンプションのシグナルを検出し、新しい容量でjobをリトライする。
- spotが利用できないときはon-demandにフォールバックする。
不安定さのないspot
spotの節約は本物ですが、プリエンプションを捉えて自動的にリトライする自己修復があってはじめて安全になります。マネージドプラットフォームはspot料金と自己修復を組み合わせられるので、中断されたビルドの痛みなしに割引を得られます。
spotを使うべきでないとき
長時間で再開不可能なjobや、最初の試行で完了しなければならないreleaseビルドは、途中のプリエンプションが完全な再起動を強いるため、spotには不向きな候補です。spotは短くべき等でリトライ可能なjobに充て、クリティカルパスの作業は保証された容量に残しましょう。
重要なポイント
- spot runnerは安価で中断可能なクラウド容量を使います。
- プリエンプションはほとんど予告なくjobを中断しうる(しばしばexit 143)。
- リトライ可能なjobをspotで実行し、プリエンプションを検出してリトライする。
- 自己修復は自動でリトライすることでspotの節約を安全にします。
関連ガイド
What Is Runner Autoscaling? Capacity That Follows DemandRunner autoscaling automatically adds and removes CI runners based on job demand. Learn how it works, why it…
What Is an Ephemeral Runner? One Job, Then GoneAn ephemeral runner is created for a single job and destroyed afterward. Learn why fresh, single-use runners…
What Is Runner Isolation? Keeping Jobs From Affecting Each OtherRunner isolation keeps each CI job separate so one cannot read or corrupt another. Learn the levels of isolat…
What Is a Managed CI Platform? Runners as a ServiceA managed CI platform operates your runner fleet end to end - provisioning, scaling, images, caching, and rel…