本文へ
ハクソク

世界を動かす技術を、日本語で。

5倍速のエッジファンクション:V8アイソレートからFirecracker MicroVMへ

元記事: 原文(netlify.com)

概要

Netlifyは毎日約10億回のEdge Functionsを稼働 新アーキテクチャで パフォーマンス5倍向上 と 高い可用性 を実現 Firecracker MicroVMとUnikraft協力による 高速・安全な実行基盤 既存のEdge Functionsの書き方や運用方法は 変更不要 今後も 更なる機能拡張と制限緩和 を予定

Netlify Edge Functionsの新アーキテクチャ概要

  • Netlify上で毎日 約10億回 のEdge Functions実行
  • Sunwebによるページパーソナライズ、Loto-Québecのトラフィックルーティングなど多様な用途
  • 完全なJavaScriptランタイム でお客様ごとにスケール
  • 低遅延を追求し、 ミリ秒単位 での処理を実現
  • Unikraftチームと連携 し、インフラを全面刷新
  • 旧構成では外部実行サービス利用→ 現在は自社エッジネットワーク内のMicroVMで処理
  • これにより 中央値で5倍高速化、セキュリティと信頼性も向上
  • Edge Functionsの 書き方や利用方法は従来通り (URLインポート、npmパッケージ、Node組み込み、netlify.toml、ローカル開発等)

パフォーマンス指標と可用性

  • ウォームインボケーション (既存MicroVM利用時)
    • 中央値5〜6ms(従来25〜40ms)
    • p99で 47.4%高速化
    • 99.998%の可用性
    • ログ配信5倍高速化
  • コールドインボケーション (新規リージョン等)
    • 全体の約1.2%で発生
    • 平均9ms

リクエスト処理フロー

  • リクエストは 最寄りのNetlifyエッジノード に到達
  • TLS終端後、Edge Functionsのルートと照合
  • マッチしない場合は通常通りキャッシュ・オリジンへ
  • マッチ時は 自社ネットワーク内の計算ノード へ転送
  • 計算ノードで サービスID確認・MicroVM管理
    • サービスごとに複数MicroVMを割当
    • リクエスト数制限 でスケールイン・アウト制御
  • 必要なイメージがなければエッジノードから取得・保存

サービス仕様と分離性

  • エッジノードが 実行用スペック(ランタイム、プラットフォーム、Edge Functionイメージ)を生成
  • CPU・メモリ・接続数も指定
  • スペックの ハッシュ+サイト固有情報でサービスID生成
  • 異なるデプロイ・環境変数は 完全に分離されたMicroVM で実行
  • V8 isolate では実現できない強力な分離性

コンピュートノード選定とキャッシュ戦略

  • 各リージョンで 複数のコンピュートノード を運用
  • ランデブーハッシュ でリクエストごとに同じノードへ割当
  • ウォーム状態維持・キャッシュヒット率向上
  • ホットスポット回避のため 一定閾値超過で分散
  • 初回のみイメージ取得・以降はキャッシュ利用

Firecracker MicroVMによる高速起動

  • 各Edge Functionは Firecracker MicroVM 上で実行
  • MicroVMは 1ms未満で生成、p99で2ms起動
  • EROFイメージをメモリマッピング し、必要部分のみ読み込み
  • MicroVM起動時に スナップショット取得
  • 未稼働時は スケールゼロ、次回はスナップショットから高速起動
  • Unikraft製品 によるVMライフサイクル管理

運用・デバッグ・信頼性対策

  • ローカルDNSリゾルバ 搭載でDNS関連の問題を低減
  • 起動時間、ポートオープン、ユーザーコード開始時間 など詳細なメトリクス収集
  • 各種 サーキットブレーカー で迅速な再ルーティング・ノード廃止に対応
  • 全工程で外部ネットワークに出ず、自社で制御

レジリエントな基盤設計

  • エンドユーザー体験 と ロールアウトの安全性 を両立
  • コンピュートノードは Unikraftのベースイメージ+パッケージ で構築
  • エッジノードと分離し、 軽量・高速化、独立スケール を実現
  • コントロールプレーンで ノードの存在・健康状態を管理
  • 新旧フリートの並行展開・ヘルシー後の切替 で安全なデプロイ

今後の展望・新たな可能性

  • 新アーキテクチャは 速度向上だけでなく拡張性も向上
  • npmパッケージサポートが正式リリース予定
    • ネイティブバイナリやランタイムファイルインポート制限が大幅緩和
  • CPU・メモリ・コードサイズ等の制限緩和 も視野
    • 旧モデル(isolate)由来の制限を見直し
  • ネットワーク制御型の新機能 も自社基盤上で実現可能
  • 既存プロジェクトは 追加作業・価格変更なしで恩恵享受
  • 今後も 制限やラフエッジの改善を継続予定

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

これ、ちょっと理解しづらいし信じがたいな。Cloudflare Workersもv8アイソレートだし、Netlifyが言ってる25-40msよりずっと速く動くはずなのに…

└

記事からの引用: 「以前のインフラでは、リクエストがインターネットを経由してエッジ関数を実行し、戻ってきて私たちに渡されていました。新しいコンピュートプラットフォームでは、リクエストが私たちのネットワーク内のコンピュートノードに転送されます。」私の知る限り、Cloudflare Workersは常にCloudflareのネットワーク内で実行されていて、インターネットに出て他の場所で実行されることはないはずなんだけど(それはハイパースケーラーのクラウドで実行されるってことだと思う)。

└

過去には、リクエストがホスティングされた実行サービスに出ていました。今日では、私たちのエッジネットワーク内のMicroVMで実行されています。アイソレートはエッジで実行されていませんでした。

Unikraftのアレックスです!マイクロVMの部分について質問があれば喜んでお答えします。興味があれば、いくつか技術的な記事も書いてますよ: - https://unikraft.com/blog/netlify-edge-functions - https://unikraft.com/customer-stories/edge-functions-netlify

└

Unikraftが注目を集めてるのを見るのはワクワクする…!Netlifyの発表がユニカーネルにどう関係してるのか、ちょっと気になるな。

AWSがLambda用にMicroVMを発明したのに、Lambda上のNodeは遅すぎるのは興味深いね(レイテンシとスループットの両方で)。必要ならトラウマ話も聞かせるよ。彼らはこの技術を使うべきだと思う、特にユースケースがあまり変わらないことが多いから(認証検証、ルールチェックなど)。

└

彼らはFirecrackerの技術を使えるかもしれない。FirecrackerはAWSの技術で、LambdaとFargateの両方の背後にあります。これらの問題を引き起こしているのは、上に構築された企業向けの余計なものだと思います。

└

マジで - Netlifyが15msのウォームスタートと10msのコールドスタートを実現できるなら、Lambdaは残りの1500msで何をやってるんだ?

次回AWSに文句を言いたくなったら、彼らがFirecrackerを提供してくれたことを思い出して。これは最高のマイクロVM技術の一つで、少なくともいくつかの非AWS製品の基盤になってるから(これがそのリストに新しく加わったやつ)。

└

誰もAWSの技術自体を嫌っているわけじゃないと思う。主に問題なのは、収益を求める姿勢(ほぼ無料の帯域幅を法外なレベルで価格設定したり、ユーザーをちまちま課金でいじめたり、アメリカの健康保険の請求書みたいに透明性がない計算をしたり、捕食的なB2Bベンダーロックインの手法)だよね。MBA(やYCスタートアップ)学校が「高い切り替えコスト」を持つ製品を作るよう教えるとき、消費者(この場合は開発者)の利益は考慮されていない。もう一つの問題は、コアの提供(S3、EC2/Lambda、ログとキューサービス)以外は、すべてがインターンが出荷した製品でベータ状態にあるように見えること。Cloudflareほどひどくはないけど、基準は地面にある。LLM以前は、Cognitoのようなサービスが開発者に多大な苦痛を与えていた。ひどいドキュメント、バグのある製品、不透明なコンソールUI、AWSに関する不満は尽きないよ。もし彼らのサービスがうまく設計されていたら、VercelやHerokuのような会社は存在しないはず。さらに悪いことに、顧客を絞り取る努力の割には、非シニアリーダーシップの日常的なエンジニアICに対して、すべての大手テクノロジー企業の中で最悪の報酬を支払っている。少なくともFacebookはそれに見合った給料がある。まるでAmazonがアジアの「996」文化を見て、倉庫スタッフにうまくいくならエンジニアにもいいだろうと考えたみたい。

SlicerVMをめっちゃ使ってるよ。これは一般の人向けのFirecracker MicroVM(不規則な人向けのプラットフォームもあるけど)で、ローカルで「エッジ」スタイルのワークロードを安全に実行するのに使ってる。エージェントやローカル開発CIとかね。これが私のProxmox VMオーケストレーターの代わりになって、どこに行っても安全で速いVMがノートパソコンで使えるようになった。コンテナからのセキュリティアップグレードを考えてるなら、Dockerfileスタイルのビルドもサポートしてるよ(エージェントを使ってるなら、絶対にやった方がいい)。正直、FirecrackerがDockerを置き換える未来は見えるけど、ほとんどのエッジ関数の実行に関してはFirecrackerがv8アイソレートを置き換えるとは思わない。まず、このシナリオは他の誰かのアイソレートを使ってるからちょっと変わってるし、いくつかのホップが加わる。次に、JS/TSを実行するアイソレートは静的解析がかなりうまくできて、スケールで歴史的に問題やエクスプロイトを探るのが多くのエッジコンピュートシナリオではかなり望ましい。MicroVMはもっと柔軟性があるから、同じ利益を得るには本当に利用できるものを制限しないといけない。中規模企業にとってはアイソレートの方がメリットがあるみたい。もちろん、Netlifyは十分大きいし、これに大きく依存してるから、彼らに有利に働いてる。

└

自分のハードウェアでデーモンを動かすのに25ドル/月か。やばいな。

Hacker Newsで議論の続きを見る