Skip to content

✍️ 필사 모드: Edge Computing新時代の詳解ガイド — Cloudflare Workers、Durable Objects、D1、Vercel Edge、Deno Deploy、Fastly、Fly.io、Turso、Region-awareアーキテクチャまで (2025)

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.

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 writesSmart 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-controlpurge APIsigned 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 (AsyncLocalStorageBuffer) をサポート。

// 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年リリース。streamTextgenerateObject、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 WorkersFly.io
ランタイムV8 IsolateFirecracker VM
言語JS + WASMすべて
コールドスタート5ms数百ms-秒
ステートレス性基本ステートレス常時起動可能
DBD1、KVPostgres、SQLiteフルスタック
WebSocketDurable 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 Workers5ms3MBV8 isolate
Fastly Compute35μs-1msMBWasmtime
Deno Deploy10msMBV8 + TS
Vercel Edge Functions10msMBV8 isolate
AWS Lambda (SnapStart)100-300msMBContainerスナップショット
AWS Lambda@Edge100ms-1sMBNode.js/Python
Fly.io (Firecracker)200ms-1sMB-GBMicroVM
Fly Machines 2.0100ms (hibernated)MBVMチェックポイント
Google Cloud Run500ms-2sMBContainer
AWS ECS Fargate10-30sGBContainer

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)

  1. 明確なユースケース — 静的/動的/ステートフル/AI
  2. ランタイム選択 — Workers (V8)、Fastly (WASM)、Fly (VM) の中から
  3. レイテンシベンチマーク — 実際のユーザー地域で測定
  4. データアーキテクチャ — region-aware、read replica、書き込みルーティング
  5. 観測可能性 — OTLP export、Cloudflare Logs、Datadog
  6. セキュリティ — WAF、Rate Limit、Zero Trust
  7. コストモデル — リクエスト単位 vs VM時間単位の計算
  8. Vendor lock-inの最小化 — Web Standard APIベース
  9. Failure Mode — originフォールバック、multi-edge provider
  10. コールドスタート予算 — p99目標を設定
  11. DB戦略 — Turso/D1/Neonの選定
  12. CI/CD — Wrangler、Vercel CLI、flyctl

よくある10のアンチパターン

  1. エッジに重い計算を強行 — CPU時間超過
  2. ステートレスな前提で状態を隠す — 一貫性バグ
  3. すべてのリクエストをエッジ処理 — 一部はoriginの方が良い
  4. レイテンシ未計測 — 体感できないエッジデプロイ
  5. 規制未考慮 — GDPR region residency違反
  6. エッジDBに10GB以上を保存 — D1の上限超過
  7. WebSocketスケーラビリティを楽観 — Durable Object設計が必要
  8. originフォールバックなし — エッジ障害時に全体ダウン
  9. コールドスタート予算なし — p99悪化
  10. 単一ベンダーロックイン — 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など静的ファイルを**地域キャッシュ**に複製。帯域の節約とレイテンシ短縮。

작성 글자: 0원문 글자: 13,150작성 단락: 0/330