1時間に12回押す条件では、走った89回のビルドのうち56回が途中で追い越されました。
62.9%が使われないまま終わります。押す間隔がビルド時間を下回った時点で起きます。
押すたびに作り直します。押す間隔がビルド時間を下回ると、多くが途中で追い越されます。
Netlifyは、押すたびに作り直します。公式はGitの提供元へ押すたびに、Netlifyは選んだ道具でビルドを走らせ、その結果を配る仕組みへ届けると述べています。
押す間隔が短いとどうなるのか。実際に流して数えました。
1日 8時間ぶん。1回の作り直しに 6分かかる
押される回数を変えて、走ったビルドのうち途中で追い越されたものを数える
1時間に押す回数 押した回数 走ったビルド 追い越されたビルド 割合 最後の変更が出るまで
2回 15回 15回 1回 6.7% 6分
6回 43回 43回 17回 39.5% 6分
12回 89回 89回 56回 62.9% 6分
30回 267回 267回 256回 95.9% 6分
60回 507回 507回 505回 99.6% 6分
1時間に2回なら、無駄になるのは6.7%だけです。押す間隔が30分で、ビルドは6分だからです。
12回になると62.9%です。平均の間隔5分が、ビルドの6分を下回りました。
60回では99.6%が無駄です。ほとんどのビルドが結果を使われずに終わります。
右端を見ると、最後の変更が出るまではどの行も6分です。無駄が増えても、待ち時間は変わりません。
つまり無駄になるのは計算資源だけです。この形はCI/CDの記事でも扱っていて、走っている途中で止める仕組みが要ります。
押す間隔がビルド時間を下回ると、無駄が一気に増える。
Each time you push to your Git provider, Netlify runs a build with your tool of choice and deploys the result to our powerful CDN.原文Netlify ドキュメント「Configure builds」 この内容の有効期限2027-02-18
取得した依存を残せます。当たり率が高いほど効きますが、外れると戻す手間だけが乗ります。
Netlifyのビルドでは、途中の結果を手元に残せます。公式はビルドの仕組みは、ビルドの過程で手元に残すためにこのディレクトリを使うと述べています。
どれだけ効くのか。当たり率を変えて実際に数えて比べました。
1回のビルドは、依存の取得 4.2分+組み立て 2.4分
手元に残したものを戻すのに 0.5分かかる。1日 48回として比べる
当たった割合 1回の平均 1日の合計 残さない場合との比 1日で浮く時間
0% 6.60分 317分 1.00倍 0分
50% 4.75分 228分 0.72倍 89分
80% 3.64分 175分 0.55倍 142分
95% 3.08分 148分 0.47倍 169分
100% 2.90分 139分 0.44倍 178分
全部当たれば0.44倍、1日で178分が浮きます。1回あたり6.60分が2.90分になります。
80%でも142分です。浮く時間の8割は、当たり率80%までで得られています。
当たるのは、依存の一覧が前回から変わっていない場合です。変えていないのに外れるなら、一覧の書き方を見ます。
版を固定していない一覧では、毎回内容が変わることがあります。固定すれば、当たり率がそのまま上がります。
この節と前の節は掛け算になります。無駄なビルドを減らし、残ったビルドを速くするという順番です。
The build system will use this directory to perform caching during the build process.原文Netlify ドキュメント「Configure builds」 この内容の有効期限2027-02-18
配られるのは出力の中だけです。その中身は、どこから辿れるかで決まります。
Netlifyが配るのは、出力のディレクトリの中だけです。公式は配られるのは、公開のディレクトリにあるファイルだけであると述べています。
その中身は、入口から辿れる範囲で決まります。実際に辿って数えました。
記述の単位 300個、合わせて 6350KB 入口からたどれないものを落とす。入口の数を変えて減り方を見る 入口の数 残る単位 残る大きさ 落とせる割合 1個 15個 242KB 96.2% 3個 62個 1292KB 79.6% 10個 87個 1586KB 75.0% 30個 136個 2557KB 59.7%
入口が1個なら、300個のうち残るのは15個だけです。96.2%を落とせます。
30個になると136個が残ります。落とせる割合は59.7%まで下がりました。
入口が増えるほど、辿れる範囲が広がります。配る量は入口の数で決まります。
だから減らしたいときに見るのは、書いた総量ではありません。いくつの入口から始まっているかです。
3つの計測はいずれも手元で書いた模型で、実際のNetlifyを動かしたものではありません。ビルド6分、依存の取得4.2分といった値はすべて置いたものです。押される時刻は一定の割合で引いており、実際には作業時間に偏ります。追い越されたビルドを止める仕組みがあれば、この表の無駄はもっと小さくなるはずです。依存の関係も生成したもので、実際の構成では落とせる割合が変わります。ここで見せているのは、押す間隔がビルド時間を下回ると無駄が急に増えるという点と、配る量は書いた総量ではなく入口の数で決まるという点の2つです。
Only files in the publish directory are deployed原文Netlify ドキュメント「Configure builds」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る