✍️ 필사 모드: Edge Computing新時代の詳解ガイド — Cloudflare Workers、Durable Objects、D1、Vercel Edge、Deno Deploy、Fastly、Fly.io、Turso、Region-awareアーキテクチャまで (2025)
日本語TL;DR — 2017年のCloudflare Workersから始まったEdge Computingが、2024-2025年にはほとんどの現代SaaSの基本インフラになった。「地球の裏側のユーザーにも50ms」というUX基準は、300以上のPoP (Point of Presence) に分散されたV8 Isolate + WASMランタイムの成果だ。エッジはCDNの進化ではなく、全く別のアーキテクチャパラダイム — ステートレスなリクエスト処理から、Durable Objects (ステートフル)、D1/Turso (エッジSQLite)、region-aware writes、Smart Placementまで成熟した。本記事ではCloudflare Workers、Vercel Edge、Deno Deploy、Fastly、Fly.ioの哲学とトレードオフ、エッジデータベース (D1、Turso libSQL、PlanetScale、Neon)、コールドスタート競争 (V8 Isolate vs Container vs Firecracker vs WASM)、2025年のエッジAIスタックまで — 現代分散アーキテクチャの新標準を全地形図として整理する。
CDNからEdge Computeへ — 30年の進化
第1世代CDN (1998-) — 静的キャッシュ
AkamaiがMITからスピンオフ (1998)。画像/CSS/JSなど静的ファイルを地域キャッシュに複製。帯域の節約とレイテンシ短縮。
第2世代CDN (2010-) — 動的コンテンツ
CloudFront (AWS、2008)、Cloudflare (2010)。HTTP cache-control、purge API、signed URL。動的ページも一部キャッシュ可能に。
第3世代 — Edge Compute (2017-)
Cloudflare Workers (2017.09)。「CDNノード上でコードを動かそう」。リクエストをoriginまで送らず、エッジで処理。
// 最初のWorkers例
addEventListener('fetch', event => {
event.respondWith(new Response('Hello from the edge!'))
})
意味: レイテンシが100ms → 5msと1/20に。Originサーバーの負荷も大幅に削減。
第4世代 — Stateful Edge (2021-)
Cloudflare Durable Objects (2021)、Fly.io (2020) が「エッジに状態を保存」を大衆化。これまでのエッジはステートレスだったが、consistencyが保証された状態がエッジで可能になった。
第5世代 — Edge AI (2024-)
Cloudflare Workers AI、Vercel AI SDK、WebLLM。LLM推論をエッジで。「ユーザーデバイスの近くでAI」が現実に。
なぜエッジか
1. レイテンシの物理学
光は真空で30万km/s、光ファイバでは20万km/s。ソウル-ニューヨークの直線距離は約11,000km → 理論上の最小往復時間は110ms。実際にはルーティングの非効率で150-200ms。
TCPハンドシェイク (1.5 RTT) + TLS 1.3ハンドシェイク (1 RTT) + HTTPリクエスト = 最低3.5 RTT = 500ms以上 (ソウル-ニューヨーク)。エッジがソウルのPoPで応答すれば5ms。
2. Origin保護
DDoS、トラフィックスパイク、クローラー → エッジが吸収。Originは本来の業務に集中できる。
3. 規制対応
GDPR、data residency — 欧州ユーザーのデータは欧州エッジでのみ処理。
4. コスト構造
帯域のegressコストはAWS Lambdaで0.09 USD/GB、Cloudflare Workersで0 USD。大量リクエスト処理時には数十〜数百倍の差。
Cloudflare Workers — V8 Isolateの元祖
アーキテクチャ
WorkersはV8 Isolate上で実行される。コンテナ/VMではなく、1つのV8プロセス内の隔離されたJS context。
Cloudflare Node (世界300+ PoP)
├─ V8 Runtime (1プロセス)
│ ├─ Isolate A (tenant 1, Worker X)
│ ├─ Isolate B (tenant 1, Worker Y)
│ ├─ Isolate C (tenant 2, Worker Z)
│ ...数千
利点:
- コールドスタート5ms (vs コンテナ100ms+)
- 3MB/isolate (vs コンテナ100MB+)
- 1ノードで数万テナント
制約:
- CPU時間制限 (Free 10ms、Paid 50ms、最大30s)
eval禁止、ネイティブアドオン不可- WASMサポートあり
主要API
export default {
async fetch(request, env, ctx) {
// KV Store
const value = await env.MY_KV.get("key")
// D1 Database (SQLite)
const { results } = await env.DB.prepare("SELECT * FROM users").all()
// R2 (S3-compatible)
const object = await env.MY_BUCKET.get("file.jpg")
// Queues
await env.MY_QUEUE.send({ event: "user_signup" })
// AI
const ai = new Ai(env.AI)
const response = await ai.run("@cf/meta/llama-3-8b-instruct", {
messages: [{ role: "user", content: "Hello" }]
})
return Response.json({ result: response })
}
}
Durable Objects — エッジのアクター
ステートフルエッジコンピューティングの中核。各Durable Objectは:
- 世界に唯一1つのインスタンスしか存在しない
- 特定地域に自動配置される (Smart Placement)
- 内部状態を永続保存 (transactional SQLite、2024年)
- WebSocket接続の維持が可能
export class ChatRoom {
constructor(state, env) {
this.state = state
this.sessions = []
}
async fetch(request) {
const pair = new WebSocketPair()
this.sessions.push(pair[1])
pair[1].accept()
pair[1].addEventListener('message', e => {
for (const session of this.sessions) {
session.send(e.data) // ブロードキャスト
}
})
return new Response(null, { status: 101, webSocket: pair[0] })
}
}
用途: リアルタイムチャット、ゲームマッチメイキング、協調編集 (Google Docsスタイル)、注文処理。
D1 — エッジSQLite
2022年リリース、2024年GA。各Cloudflare PoPにSQLite DBを複製。Primaryは特定リージョン、read replicaは全世界。
const { results } = await env.DB
.prepare("SELECT * FROM users WHERE id = ?")
.bind(userId)
.all()
await env.DB
.prepare("INSERT INTO orders (user_id, total) VALUES (?, ?)")
.bind(userId, 99.99)
.run()
制限: 10GB/DB (2024年基準)、書き込みはprimaryリージョンへルーティング。
R2 — S3互換オブジェクトストレージ
Egress手数料0。S3互換API。2024年にBYOドメインサポート。
Workers AI
2023年リリース。Cloudflareが運用するGPUプールでオープンソースモデルを推論。
const ai = new Ai(env.AI)
// Llama 3
const response = await ai.run("@cf/meta/llama-3-8b-instruct", {
messages: [{ role: "user", content: "What is edge computing?" }]
})
// Stable Diffusion
const image = await ai.run("@cf/stabilityai/stable-diffusion-xl-base-1.0", {
prompt: "A cat coding on a laptop"
})
// Embedding
const vector = await ai.run("@cf/baai/bge-base-en-v1.5", {
text: "Hello world"
})
Vectorize
2024年GA。Cloudflareのベクトルデータベース。Workers AI + Vectorizeの組み合わせでエッジRAG。
Vercel Edge Functions + Middleware
2022年リリース。Next.js中心のフレームワーク開発者がターゲット。
Edge Runtime
Cloudflare Workersと類似したV8 isolateベース。一部のNode.js API (AsyncLocalStorage、Buffer) をサポート。
// Next.js Edge API Route
export const config = { runtime: 'edge' }
export default async function handler(req) {
const country = req.geo?.country
return new Response(`Hello from ${country}`)
}
Middleware
// middleware.ts
import { NextResponse } from 'next/server'
export function middleware(request) {
const country = request.geo?.country
if (country === 'KR') {
return NextResponse.rewrite(new URL('/kr', request.url))
}
}
export const config = { matcher: '/((?!api|_next).*)' }
A/Bテスト、geolocationルーティング、ボット対策で主に使用される。
Vercel Edge Config
読み取り専用KV、~20msでグローバル更新。Feature flag、A/Bバケット定義に最適。
Vercel AI SDK
2023年リリース。streamText、generateObject、tool callingを標準化。
import { streamText } from 'ai'
import { openai } from '@ai-sdk/openai'
export async function POST(req) {
const { messages } = await req.json()
const result = await streamText({
model: openai('gpt-4-turbo'),
messages,
})
return result.toDataStreamResponse()
}
Deno Deploy — V8 + TypeScriptネイティブ
Ryan Dahl (Node.js作者) が作ったDeno。2021年にDeno Deploy。
特徴
- V8 isolateベース
- TypeScriptネイティブ — トランスパイル自動
- Web標準API — Node.js互換ではなく標準のfetch/Request/Response
- npm互換 (2023年追加)
Deno.serve((req) => {
return new Response("Hello from Deno Deploy")
})
Netlify Edge Functions
Deno Deployランタイムを内部で使用。Netlifyと統合。
Fastly Compute@Edge — 100% WASM
2020年GA。CloudflareがV8ベースなら、FastlyはWasmtimeベース。
特徴
- 言語非依存 — Rust、Go、JavaScript、AssemblyScript
- 決定的なコールドスタート — GCなし、35μsを主張
- 相対的に高価、エンタープライズ向け
// Rust on Fastly
use fastly::{Error, Request, Response};
#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
Ok(Response::from_body("Hello from WASM edge"))
}
KV Store、Config Store、Secret Store
Cloudflareと類似したエッジストレージ。
Fly.io — リージョンVMオーケストレーション
2020年リリース。「エッジに本物のコンテナを動かそう」。
アーキテクチャ
- Firecracker MicroVM (AWS Lambdaと同じハイパーバイザ)
- 35以上のリージョン
fly.tomlでリージョンを選択
# fly.toml
app = "my-app"
primary_region = "nrt" # 東京
[build]
image = "my-app:latest"
[[services]]
internal_port = 8080
protocol = "tcp"
[[services.ports]]
port = 443
handlers = ["tls", "http"]
[http_service]
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
vs Cloudflare Workers
| 軸 | Cloudflare Workers | Fly.io |
|---|---|---|
| ランタイム | V8 Isolate | Firecracker VM |
| 言語 | JS + WASM | すべて |
| コールドスタート | 5ms | 数百ms-秒 |
| ステートレス性 | 基本ステートレス | 常時起動可能 |
| DB | D1、KV | Postgres、SQLiteフルスタック |
| WebSocket | Durable Objects | 通常のTCP |
| 価格 | リクエストベース | VM時間ベース |
選定基準:
- JS/TS Web API、ステートレス → Cloudflare
- Python/Rust/Go長時間プロセス、Postgres必須 → Fly.io
- Phoenix LiveView、Discordスタイル → Fly.io (複数社の事例)
Phoenix LiveView + Fly.io
Elixir/PhoenixチームがFly.ioに出資し、公式パートナー。LiveViewは持続的WebSocketが必要なためFly.ioが完璧。
AWSの回答 — Lambda@Edge、CloudFront Functions
CloudFront Functions (2021)
- JavaScriptのみ
- 1msコールドスタート
- 1ms最大実行時間
- ヘッダー書き換え、シンプルなリダイレクトのみ
Lambda@Edge (2017)
- Node.js、Python
- 5秒タイムアウト
- より強力だがコールドスタートあり
- 13リージョンのみ (Cloudflareの300+と対照的)
限界: AWSエコシステムに留まる必要のある顧客向け。汎用エッジプラットフォームとしてはCloudflare/Vercel/Flyに劣る。
エッジデータベース競争
エッジの真のボトルネックはデータ。ステートレスなコンピュートは容易だが、ステートフルなconsistencyは物理法則との戦い。
Turso — libSQL (Chiselstrike、2022)
- SQLite fork「libSQL」 — リモートレプリケーション内蔵
- 各リージョンにread replica、書き込みはprimaryへ
- 1ms読み取りレイテンシを主張
turso db create my-db --location fra
turso db replicate my-db hnd # 東京replica追加
import { createClient } from '@libsql/client'
const db = createClient({
url: process.env.TURSO_URL,
authToken: process.env.TURSO_TOKEN
})
const result = await db.execute({
sql: "SELECT * FROM users WHERE id = ?",
args: [userId]
})
革新: ブランチ (gitライク)、Embedded Replicas (アプリにDB内蔵でローカルクエリ)。
Cloudflare D1
先述の通り。10GB制限あり。
PlanetScale
MySQLベース。Vitessシャーディング。「ブランチをmainにマージ」する開発ワークフロー。
pscale branch create my-db feature-x
pscale deploy-request create my-db feature-x
2024年PostgreSQLリリース (MySQL中心から拡張)。
Neon
Serverless PostgreSQL。ストレージ-コンピュート分離。
- ブランチング — gitのように
- ゼロスケール — 未使用時はcompute 0
- 高速コールドスタート — 100ms
2024年DB of the Yearを受賞。
Xata
PostgreSQL + Typesafeクライアント + 全文検索。
Supabase Edge Functions
Supabaseのエッジランタイム。Denoベース。Supabase DB (PostgreSQL) との連携最強。
EdgeDB
グラフクエリ、強い型付け。PostgreSQL上に新しいクエリ言語。
Region-Awareアーキテクチャ設計
「エッジにコンピュートを分散」は容易だが、「データの一貫性」は難しい。
Read Local、Write Global
- 読み取りは近くのreplicaから
- 書き込みはprimaryリージョンへルーティング (追加レイテンシを受容)
User (ソウル)
↓ read (5ms)
Seoul replica ←─── replication ──── Primary (Frankfurt)
↑ write (250ms)
Smart Placement (Cloudflare)
ワーカーをOrigin DBの近くに配置する逆転の発想。ユーザーはCDNキャッシュでレイテンシ最小化、WorkersはDBと同居。
// wrangler.toml
[placement]
mode = "smart"
Single-Leader with Leader Election
- CockroachDB、Spannerスタイル
- Raft/Paxosコンセンサス
- Leaderがリージョン間で移動
Geo-partitioning
ユーザーデータをリージョンに固定。韓国ユーザーのデータ → ソウルDB。GDPR対応に必須。
-- CockroachDB
ALTER TABLE users CONFIGURE ZONE USING
constraints = '{"+region=seoul": 1}';
Eventual Consistency
DynamoDB Global Tables、Cloudflare KV。読み取りはゾーン自由、書き込みはeventual。
Put (us-east-1): key=x, value=v1
↓ (数十秒)
Get (ap-northeast-1): key=x, value=v1 (または以前)
ニュース、SNSフィードのような「秒単位の正確性」が不要なデータに適する。
CRDT — 衝突のない複製
Conflict-free Replicated Data Types。Riak、Redis CRDT、Automerge、Y.jsが実装。
- Figma、Linear、Notionが使用
- オフライン編集 + 自動マージ
Cold Start競争 — 2025年の数値
| 技術 | コールドスタート | メモリ | 特徴 |
|---|---|---|---|
| Cloudflare Workers | 5ms | 3MB | V8 isolate |
| Fastly Compute | 35μs-1ms | MB | Wasmtime |
| Deno Deploy | 10ms | MB | V8 + TS |
| Vercel Edge Functions | 10ms | MB | V8 isolate |
| AWS Lambda (SnapStart) | 100-300ms | MB | Containerスナップショット |
| AWS Lambda@Edge | 100ms-1s | MB | Node.js/Python |
| Fly.io (Firecracker) | 200ms-1s | MB-GB | MicroVM |
| Fly Machines 2.0 | 100ms (hibernated) | MB | VMチェックポイント |
| Google Cloud Run | 500ms-2s | MB | Container |
| AWS ECS Fargate | 10-30s | GB | Container |
Firecracker (AWSが2018年にオープンソース化): 125msでKVM microVMを起動。LambdaとFly.ioの基盤。
isolates vs microVMs: Isolatesは高速だがセキュリティ境界が弱い (ハードウェア隔離ではない)。microVMはKVM隔離 + 高速 (数百ms)。
エッジAI — 2024-2025年の爆発
Cloudflare Workers AI
- Llama 3、Mistral、Stable Diffusionなど40以上のモデル
- 使用量ベース課金、GPUを直接管理する必要なし
Vercel AI SDK + v0
- UI生成AI (v0.dev)
- ストリーミングテキスト、RSCと統合
Supabase AI
- pgvector + Edge Functions
WebLLM (MLC AI)
- ブラウザでLlama/Mistralを実行
- WebGPUを活用
Transformers.js (HuggingFace)
- ブラウザでBERT、Whisper、SAM
Ollama Cloud (2024)
- Local-first LLMのクラウド拡張
共通パターン: プロンプトはエッジ、重い推論はGPUリージョン → ハイブリッド。
エッジセキュリティ — Zero Trust
DDoS防御
Cloudflareは2024年に259M QPS DDoS防御事例を報告。エッジが吸収すべき理由。
Rate Limiting
// Cloudflare Workers
export default {
async fetch(req, env) {
const { success } = await env.RATE_LIMITER.limit({ key: req.headers.get("CF-Connecting-IP") })
if (!success) return new Response("Too many", { status: 429 })
// ...
}
}
mTLS、Zero Trust
Cloudflare Access、Tailscale、Zscaler — VPNの代替。アプリ別認証をエッジで実行。
WAF (Web Application Firewall)
Cloudflare WAFはOWASP Top 10を自動ブロック。エッジで実行され、originを保護。
Bot Management
AIベースのボット検出。Claude、GPT-4のスクレイパーをフィルタリング。
実戦採用ガイド — いつどのエッジか
シナリオ1 — 静的サイト + 一部動的
- 推奨: Vercel、Netlify
- Next.js/Nuxt/SvelteKit + ISR + Edge Middleware
シナリオ2 — API + WebSocket + リアルタイム
- 推奨: Cloudflare Workers + Durable Objects
- チャット、ゲームロビー、協調エディター
シナリオ3 — グローバルSaaS + Postgres
- 推奨: Fly.io + Neon/Supabase、またはVercel + Neon
- 伝統的なWebアプリ、region-aware
シナリオ4 — エンタープライズ + 規制対応
- 推奨: Fastly + 専用リージョン / AWS Lambda@Edge
- 金融、ヘルスケア
シナリオ5 — エッジAI
- 推奨: Cloudflare Workers AI + Vectorize
- またはVercel AI SDK + OpenAI
シナリオ6 — IoT/低レイテンシ
- 推奨: AWS IoT + Wavelength (5G edge)
- Cloudflare Workers
2025年エッジトレンド総括
1. エッジ + AI統合
すべての主要プラットフォームがAIランタイムを追加。Workers AI、Vercel AI、Fastly AI (2024年予告)。
2. Stateful Edgeの成熟
Durable Objects、Turso Embedded Replica、Fly Machines auto-hibernate。
3. Region-awareフレームワーク
Next.js App Routerのruntime: 'edge'、Remix、Astroがエッジに簡単にデプロイ。
4. エッジデータベース戦争
D1 vs Turso vs Neon vs PlanetScale。SQLite/libSQLの躍進。
5. MicroVMの改善
Firecracker 2.0 (2024) が秒単位の起動 → 100msに。
6. エッジセキュリティの標準化
WAF + Zero Trust + Bot Managementのバンドル。
7. FinOpsエッジ
リクエストベース課金 → 大量処理時にはContainerが安くなる逆転。コスト最適化のトレードオフ。
実戦導入チェックリスト (2025)
- 明確なユースケース — 静的/動的/ステートフル/AI
- ランタイム選択 — Workers (V8)、Fastly (WASM)、Fly (VM) の中から
- レイテンシベンチマーク — 実際のユーザー地域で測定
- データアーキテクチャ — region-aware、read replica、書き込みルーティング
- 観測可能性 — OTLP export、Cloudflare Logs、Datadog
- セキュリティ — WAF、Rate Limit、Zero Trust
- コストモデル — リクエスト単位 vs VM時間単位の計算
- Vendor lock-inの最小化 — Web Standard APIベース
- Failure Mode — originフォールバック、multi-edge provider
- コールドスタート予算 — p99目標を設定
- DB戦略 — Turso/D1/Neonの選定
- CI/CD — Wrangler、Vercel CLI、flyctl
よくある10のアンチパターン
- エッジに重い計算を強行 — CPU時間超過
- ステートレスな前提で状態を隠す — 一貫性バグ
- すべてのリクエストをエッジ処理 — 一部はoriginの方が良い
- レイテンシ未計測 — 体感できないエッジデプロイ
- 規制未考慮 — GDPR region residency違反
- エッジDBに10GB以上を保存 — D1の上限超過
- WebSocketスケーラビリティを楽観 — Durable Object設計が必要
- originフォールバックなし — エッジ障害時に全体ダウン
- コールドスタート予算なし — p99悪化
- 単一ベンダーロックイン — Web Standard APIベースで回避
次回予告 — 「現代CI/CDの進化」 — GitHub Actions、GitLab CI、Dagger、Nx、Turborepo、Remote Cache、Hermetic Buildまで
エッジデプロイが速くなった分、CI/CDパイプラインにも革命が起きた。2024-2025年のCI/CDは「ビルド1回30分」の時代を脱し、Remote Cache、Hermetic Build、Dagger、Distributed Testのような技術で「ビルド5分、テスト10分」を一般化した。
次回の記事では:
- CI/CDの歴史 — Jenkins → CircleCI → GitHub Actions → Dagger
- GitHub Actionsの深掘り — matrix、reusable workflows、composite actions
- GitLab CI vs Jenkins vs Buildkite vs CircleCI
- Monorepo Build — Nx、Turborepo、Bazel、Rush、pnpm workspace
- Remote Cache + Distributed Build — Bazel、Turborepo Remote Cache、Nx Cloud
- Hermetic Build — 再現可能性の哲学
- Dagger — 「CI/CD as code」 programmable pipelines
- Container Registries — GitHub Packages、ECR、Harbor
- Supply Chain Security — SLSA、sigstore、cosign、SBOM
- Test Parallelization — Jest/Vitest sharding、Playwright shards
- Deployment Strategies — Blue/Green、Canary、Progressive Delivery (Flagger)
- Platform Engineering — Backstage + CI/CDの統合
を扱う。「速いCI/CD」は単なる技術ではなく、チームの生産性とデプロイ頻度を直接決定するレバーであり、「monorepoの大規模組織」がなぜCI/CDを製品のように扱うのかを追跡する。
현재 단락 (1/330)
AkamaiがMITからスピンオフ (1998)。画像/CSS/JSなど静的ファイルを**地域キャッシュ**に複製。帯域の節約とレイテンシ短縮。