Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Edgeコンピューティング 入門
Search
Seiya Nuta
October 25, 2023
670
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Edgeコンピューティング 入門
Seiya Nuta
October 25, 2023
Featured
See All Featured
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
500
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
4 Signs Your Business is Dying
shpigford
187
23k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
The Curious Case for Waylosing
cassininazir
1
490
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Mobile First: as difficult as doing things right
swwweet
225
10k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
230
Transcript
Edgeコンピューティング 入門 怒田 晟也 <
[email protected]
> NIKKEI Tech Talk (Oct 2023)
ぬた
一般的なWebサービスの設計 ユーザ CDN バックエンド 10 ms 50 ms
ユーザに近いCDNを活用した高速化 ユーザ CDN バックエンド 10 ms ユーザのより近くから キャッシュを返す 一般的なWebサービスの設計 50
ms
CDNで色々したい ユーザ CDN バックエンド 10 ms キャッシュが返せるなら リダイレクションしたい A/Bテストしたい 認証したい
rewriteしたい 一般的なWebサービスの設計 50 ms
Edge コンピューティング
「Edgeコンピューティング」の2つの見方 ⬩ 「CDNのプラグイン」としてのEdgeコンピューティング ⬩ 「バックエンド実行環境」としてのEdgeコンピューティング
CDNの機能を「自分で」拡張できる (ミドルウェア) 「CDNのプラグイン」としての Edgeコンピューティング ユーザ CDN CDN上のバックエンド (認証、A/Bテストなど) バックエンド リクエスト内容
CDNの振る舞い変更 (リダイレクトなど)
「バックエンド実行環境」としての Edgeコンピューティング ユーザ ( 米国リージョン) バックエンド ( 日本リージョン) 150 ms
ユーザにより近い部分でアプリを実行できる 10 ms ユーザ ( 米国リージョン) CDN上の バックエンド ( 米国リージョン)
「バックエンド実行環境」としての Edgeコンピューティング ⬩ Edge SSR (Server Side Rendering) ⬩ API エンドポイント ⬩ OGイメージ動的生成 + CDNキャッシュ
注意点
バックエンドのリージョンに注意 10 ms ユーザ ( 米国リージョン) CDN上の バックエンド ( 米国リージョン)
導入すれば速くなるわけではない PostgreSQL データベース ( 日本リージョン) 150 ms
バックエンドのリージョンに注意 導入すれば速くなるわけではない 10 ms ユーザ ( 米国リージョン) CDN上の バックエンド (
米国リージョン) 分散 データベース ( 米国リージョン) 10 ms 分散 データベース ( 日本リージョン) 裏で同期
CPU・メモリバウンドの処理には不向き 限られた計算資源 Cloudflare Workers Fastly Compute@Edge Vercel Edge Functions
アプリケーションはできるだけ小さく 大きいアプリではコールドスタート時間が発生する (場合もある) https://blog.cloudflare.com/better-micro-frontends/
実行環境
旧来のサーバーレス Edgeなサーバーレス Ser ハードウェア Ser ホストOS Ser Hardware アプリ (プロセス)
OS Ser 言語処理系 (V8/Wasmtimeなど) Serアプリ (グリーンスレッド ) アプリ (プロセス) ユーザー 空間 より軽量・より細かい隔離技術への移行 HW仮想化 Serアプリ (グリーンスレッド ) Ser ゲストOS Ser ゲストOS
Cloudflare Workers / Vercel Edge API JavaScript主体のAPIデザイン ⬩ V8 JavaScriptエンジンベース
⬩ 言語処理系レベル (V8 Isolate) で隔離 ⬩ 同じインスタンスを使い回してコールドスタート (msオーダー) を回避 ⬩ JavaScriptメイン + WebAssembly (C, C++, Rust) ⬩ API は Webブラウザから拝借: fetch, Request, …
WinterCG: Web-interoperable Runtimes Community Group JavaScriptメインなプラットフォーマーたち
None
Fastly Compute@Edge API 言語に依存しないAPIデザイン ⬩ WebAssembly エンジンベース (JavaScriptインタプリタ丸ごとコンパイル) ⬩ 言語処理系レベルで隔離
⬩ 毎回新しいインスタンスで実行される (μsオーダーで起動できる) ⬩ JavaScript, Rust, Go 用の公式SDK ⬩ API は Webブラウザから拝借: fetch, Request, …
Bytecode Alliance WebAssemblyメインなプラットフォーマーたち
“Edge” な環境 vs. コンテナ コンテナに比べると制約がある ⬩ Node.jsでもWebブラウザでもない独特なJavaScriptの世界 ⬩ コンテナの方が自由自在 ⬩
“Edge” な環境はスケーラビリティのための一種の妥協 ⬩ 早い起動時間・スケールアウトの面倒を任せたい場合に “Edge” が便利