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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Seiya Nuta Seiya Nuta
October 25, 2023
610

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” が便利