Cloudflare Pagesのインフラがパワーアップ。 ビルド時の初期化が2秒まで短縮しました。

2022.05.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Cloudflare Pagesのインフラストラクチャーが新しくなりました。

ビルド時間やセキュリティ、ログ出力などが強化されていますので、本日はそれを紹介します。

ビルド時間の高速化

Cloudflare Pagesではビルドプロセスが大きく分けて下記4つあります。

  1. ビルド環境の初期化
  2. Gitリポジトリのクローン
  3. アプリケーションのビルド
  4. Cloudflareネットワークへのデプロイ

以前のインフラストラクチャでは、各ビルドを実行するための仮想マシンが都度立ち上がっていたのですが、新しいPagesではビルドマシンが常に待機状態で控えています。

そのため、以前は平均して2分以上かかっていた初期化プロセスが、新しいPagesインフラでは2~3秒で済むそうです。

実際にGatsbyのサンプルアプリをPagesでビルドして試してみました。
ビルドログの環境初期化時間を比較したところ、アナウンス通り大幅に短縮できていました。これは嬉しい。

cloudflare pages

よりセキュアなビルド環境

新しいインフラストラクチャではカーネルをホストと共有する代わりに、各コンテナはgVisorで実行されます。

gVisorは、ホストカーネルとコンテナを切り離し、コンテナをサンドボックス化することができ、セキュリティ的なメリットがあります。

gVisorの説明は下記がわかりやすかったです。
https://www.slideshare.net/uzy_exe/201805gvisorintroduciton

新しいビルドがトリガーされると新しいgVisorコンテナが起動し、安全なサンドボックスで作業を実行できます。

ビルドログのストリーミング

以前はビルドが成功もしくは失敗するまでビルドログの生成を待つ必要がありましたが、新しいPagesではほぼリアルタイムのログ生成が可能になりました。ビルドが失敗した際も、ダッシュボード上での原因特定がより迅速に行えるかと思います。

cloudflare pages

ビルドブランチの制御

Cloudflare Pagesでは元々、1つのリポジトリから本番とプレビューなどブランチに応じたサイトが生成できました。

今回のリリースで、どのブランチに変更があったときにビルドをトリガーするか、指定することが可能になりました。

本番ブランチは1つ、プレビューブランチは無制限に(もしくは本番以外のブランチを全て)選択可能です。

ブランチの指定にはワイルドカードが使えます。

cloudflare pages

また、コミットメッセージからビルドプロセスをスキップするオプションも追加されました。 cloudflare pages commit

今後

Cloudflareによると、Pagesの機能拡充スピードは益々加速していくとのこと。今後下記機能のリリースが予定されており、非常に楽しみです。

  • インクリメンタルビルド
    • Gatsbyなどの重いフレームワークのビルド体験をより向上させるため、コミット間の差分を検出し、更新されたファイルのみを再ビルドすることでビルドを高速化します
  • ビルド時のキャッシュ
    • 外部依存関係のキャッシュを行い、ビルドがより高速化します
  • ビルドイメージのアップデート
    • 各言語・フレームワークの最新バージョンに対応し、より高速なビルド・より高いセキュリティを確保するため、基盤のビルドイメージをアップデートし、ユーザーが選択できるようにします
  • エラーログの詳細化
    • 内部エラーなどの理由をよりわかりやすく出力し、原因の特定が容易になります

参考