Skip to content
Latchkey

Fan-Out - CI/CD用語集の定義

ファンアウトは、1単位のCI作業を多数の並列jobに分散させ、実時間を短縮します。

ファンアウトとは、1つのCI jobを多数の並列jobに分割し、独立した作業(test shards、matrixの組み合わせ、パッケージごとのbuild)を逐次ではなく同時に実行することです。

ファンアウトは、pipelineが単一の論理ステージを多数の並行jobへ拡張するスケジューリングの形です。GitHub Actionsでは、strategy.matrixやjobの動的生成で表現するのが一般的です。

仕組み

コーディネーターのstepが作業項目のリスト(shards、バージョン、パッケージ)を生成し、下流のjobがそれぞれ1項目ずつ並列に実行します。スループットは利用可能なrunnerの並行数によって制限されます。

CIでは

ファンアウトは長いテストスイートを短縮する最速の方法ですが、runnerの分(minutes)を倍増させます。jobがキューに並ばないよう、シャード数を並行数の上限とバランスさせてください。

関連ガイド