Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Edgeコンピューティング 入門

Avatar for Seiya Nuta Seiya Nuta
October 25, 2023
600

Edgeコンピューティング 入門

Avatar for Seiya Nuta

Seiya Nuta

October 25, 2023
Tweet

Transcript

  1. ユーザにより近い部分でアプリを実行できる 10 ms ユーザ (󰑔 米国リージョン) CDN上の バックエンド (󰑔 米国リージョン)

    「バックエンド実行環境」としての Edgeコンピューティング ⬩ Edge SSR (Server Side Rendering) ⬩ API エンドポイント ⬩ OGイメージ動的生成 + CDNキャッシュ
  2. バックエンドのリージョンに注意 10 ms ユーザ (󰑔 米国リージョン) CDN上の バックエンド (󰑔 米国リージョン)

    導入すれば速くなるわけではない PostgreSQL データベース (󰏦 日本リージョン) 150 ms
  3. バックエンドのリージョンに注意 導入すれば速くなるわけではない 10 ms ユーザ (󰑔 米国リージョン) CDN上の バックエンド (󰑔

    米国リージョン) 分散 データベース (󰑔 米国リージョン) 10 ms 分散 データベース (󰏦 日本リージョン) 裏で同期
  4. 旧来のサーバーレス Edgeなサーバーレス Ser ハードウェア Ser ホストOS Ser Hardware アプリ (プロセス)

    OS Ser 言語処理系 (V8/Wasmtimeなど) Serアプリ (グリーンスレッド ) アプリ (プロセス) ユーザー 空間 より軽量・より細かい隔離技術への移行 HW仮想化 Serアプリ (グリーンスレッド ) Ser ゲストOS Ser ゲストOS
  5. Cloudflare Workers / Vercel Edge API JavaScript主体のAPIデザイン ⬩ V8 JavaScriptエンジンベース

    ⬩ 言語処理系レベル (V8 Isolate) で隔離 ⬩ 同じインスタンスを使い回してコールドスタート (msオーダー) を回避 ⬩ JavaScriptメイン + WebAssembly (C, C++, Rust) ⬩ API は Webブラウザから拝借: fetch, Request, …
  6. Fastly Compute@Edge API 言語に依存しないAPIデザイン ⬩ WebAssembly エンジンベース (JavaScriptインタプリタ丸ごとコンパイル) ⬩ 言語処理系レベルで隔離

    ⬩ 毎回新しいインスタンスで実行される (μsオーダーで起動できる) ⬩ JavaScript, Rust, Go 用の公式SDK ⬩ API は Webブラウザから拝借: fetch, Request, …
  7. “Edge” な環境 vs. コンテナ コンテナに比べると制約がある ⬩ Node.jsでもWebブラウザでもない独特なJavaScriptの世界 ⬩ コンテナの方が自由自在 ⬩

    “Edge” な環境はスケーラビリティのための一種の妥協 ⬩ 早い起動時間・スケールアウトの面倒を任せたい場合に “Edge” が便利