開発者プラットフォームの意思決定・トレードオフ・パターン。
"なぜそれを選ぶのか" を、構造から理解する。
Jamie Lord 著「Architecting on Cloudflare」(2026年5月版) より · 導入判断のためのリファレンス
独立系の技術書「Architecting on Cloudflare」(Jamie Lord 著)。Cloudflare 非公式・無関係。著者は Cloudflare パートナー所属だが、本書は商業的義務ではなく技術的評価に基づく。
マーケ資料ではなく限界・失敗閾値・ハイパースケーラが優位なシナリオまで率直に記述。顧客に正直に伝えられる内容で、提案の説得力と信頼を高める。
想定読者: CTO・アーキテクト・リードエンジニア — クラウドアーキテクチャの素養を前提に、別のアプローチを評価する人。
移行する理由を探すのではなく、不採用の理由を探す。評価のデフォルトを逆転させる視座。
グローバル配信・即時スケール・ゼロコールドスタート・統合セキュリティがデフォルトで手に入る。制約は明示的・文書化済みで、自社ワークロードに当たるかすぐ分かる。
不要な制約を回避する設計と、管理不要だったはずの複雑さに対価を払う。評価する頃にはスイッチングコストが積み上がっている。
新規案件は "慣れた AWS" ではなく Cloudflare で1週間試作し、ハード制約に当たるか検証。ブロッカーを早期に発見できる。
単価ではなく総コスト。Egress・NAT ゲートウェイ・CPU 課金の観点で語ると、差が明確になる。
不適合シナリオを先に提示することで提案の信頼性が上がる。"合わなければ別の選択も妥当"。
メンタルモデルを揃える。以降すべての土台になる4つの前提。
Workers は VM でもコンテナでもなく、Chrome の JS エンジンと同じ V8 isolate(既存プロセス内の軽量サンドボックス)で実行される。
プロビジョンド・コンカレンシーや keep-warm といったコールドスタート対策のカテゴリが丸ごと不要になる。
デプロイすると全データセンターに同時展開。リージョンのドロップダウンは無い。サンパウロのユーザーはサンパウロに、シンガポールはシンガポールに着地する。
マルチリージョンのレプリケーション・フェイルオーバー・整合性管理という数週間のエンジニアリングが "既定動作" になる。
バックエンドへ複数回呼び出す場合、ユーザー近接ではなくバックエンド近接に自動配置し、総レイテンシを最小化。
グローバルが既定。制約は "特定地域に限定する" 方向のオプトイン。
→ 規制ワークロードを "拡張" ではなく "限定" で実現。
export default { async fetch(req, env) { // env.DB = D1, env.STORAGE = R2, // env.CACHE = KV — 設定で実体が決まる const r = await env.DB .prepare("SELECT * FROM users").all(); const f = await env.STORAGE.get("config.json"); return Response.json(r); } };
本番/開発/テストでコードを変えずに実体を切替。資格情報の誤コミットが構造的に起きない。
バインド資源呼び出しはインターネットを経由せず、多くは同一マシン内。RPC 的な呼び出し。
内部サービスは URL で到達不能(env.SERVICE 経由のみ)。攻撃面そのものが存在しない。
| ハイパースケーラの問い | Cloudflare では |
|---|---|
| "どのリージョンに置く?" | 問いが消える — 全箇所に自動配置。制約は地域限定のみ |
| "インスタンス数は?" | 問いが消える — 設定なしで自動スケール(上限キャップも無い) |
| "コネクションプールの調整は?" | ネイティブ資源はバインディングが吸収。外部 DB は Hyperdrive |
| "コールドスタート対策は?" | 不要 — 既定で sub-5ms。warm-ping/プロビジョニングは過剰 |
Durable Objects も Workflows も Queues も Containers も、Workers の上に建つ。
典型的な API(JWT 検証 + D1×2 + 外部 API + 整形)の内訳:
CPU 時間 ≈15ms のみ課金。待機の205msは無料。I/O 主体のワークロード(大半の API/Web/統合層)で劇的に有利。
壁時計 220ms ぶん課金。93%は待機。"計算" ではなく "存在" に課金される。
Worker 間を型安全な RPC で接続。同一ロケーション実行なら1ms 未満。DNS・接続確立・シリアライズ・TLS が無く、失敗は "相手 Worker の失敗" のみ。
| 通信 | レイテンシ |
|---|---|
| Service binding(同居) | 0.1–0.5ms |
| Service binding(別所) | 1–5ms |
| 外部 HTTP(同一地域) | 20–50ms |
| 外部 HTTP(地域跨ぎ) | 100–300ms |
まずは単一 Worker から。分割は安いが無料ではない。
流行で分割しない。20回の binding 呼び出しはモノリスより遅い。
他クラウドに等価物が無い、協調プリミティブ群。
グローバル一意の ID + 専有 SQLite を持つ "コードを実行できる DB の行"。AWS に等価物なし・Azure は複数サービスの組合せ・GCP は無い。
リアルタイム協調(チャット/共同編集=1ドキュメント1DO)、レート制限、リーダー選出、ゲームセッション、プレゼンス。出力ゲーティングで線形化可能な強整合を設定ゼロで。
読み取り主体で陳腐化許容→KV。協調なしのリレーショナル→D1。"神オブジェクト" は ~1,000 RPS で詰まる。移行の逃げ道が無い=最大のロックイン。
TypeScript で書き、プラットフォームがリプレイ・チェックポイント・ステップ永続化を担う。失敗しても最後の完了ステップから再開(各ステップ exactly-once 成功)。
日〜週単位の待機をハイバネートしながら限界コストゼロで。Step Functions は同じ待機に状態遷移課金。waitForEvent() で人間承認/Webhook も。
非適合: 独立・冪等タスク → Queues(安い)。リアルタイム状態照会・WebSocket → DO 直接。決定性と冪等性が必須。
"あとでやる"。Worker プロジェクト内のバインディングで、別サービス設定が不要。プロデューサは即返し、コンシューマが後で処理。
| 項目 | 値 |
|---|---|
| メッセージ上限 | 128 KB(超過分は R2 参照) |
| スループット | ~5,000 msg/秒/キュー |
| コンシューマ wall time | 15分 |
| 配信保証 | at-least-once のみ |
メッセージは再配信される。順序保証・exactly-once は無い。DLQ を必ず構成し、バックログ深さ・エラー率を監視。
運用が単純(IAM/可視性タイムアウト不要)。一方で FIFO/順序保証なし・128KB 上限。ステータス追跡や補償を足し始めたら → Workflows の出番。Pull 型 API で K8s/レガシーからも消費可。
各インスタンスは Durable Object が制御(DO=頭脳、Container=筋肉)。
再設計が1週間未満かつ月1万回以上なら、Workers 化が回収早い。
2種類のリアルタイム: データ(テキスト/JSON)は DO + WebSocket。メディア(音声/映像)は Cloudflare Realtime(WebRTC/UDP)。
SFU を300+拠点で実行。各参加者が最寄りに接続し "SFU をどこに置くか" のトレードオフが消滅。AWS Chime 14拠点/Azure 18/Twilio 7。
| 項目 | 値 |
|---|---|
| SFU/TURN 帯域課金 | $0.05/GB |
| 無料枠 | 1,000 GB/月 |
| 最大参加者 | 1,000(Chime 250/Twilio 50) |
| 録画 | R2 へ組込(SDK) |
非適合: PSTN 電話発着信なし → Chime/Twilio。FedRAMP/HIPAA 要件は要確認。"リアルタイム" が単なるテキストなら DO+WebSocket が安い。
"大きな1つ" ではなく "小さな多数" を選ぶ。
| ニーズ | 選択 | 理由/数値 |
|---|---|---|
| 読み取り主体・陳腐化 OK | KV | sub-10ms グローバル/結合的整合(〜60s 伝播) |
| リレーショナル・新規 | D1 | SQLite・強整合・1DB 10GB/5万DB でシャード |
| 既存 PG/MySQL + 運用 | Hyperdrive | 接続プール+地理短縮(Sydney→us-east 600→50ms) |
| 協調・カウンタ・レート制限 | Durable Objects | 単一スレッドで競合を排除・線形化可能 |
| ファイル・blob・メディア | R2 | 5TB/オブジェクト・Egress 無料 |
| ベクトル/意味検索 | Vectorize | 1536次元・1000万ベクトル/インデックス |
判断順序 ①アクセスパターン ②整合性(read-after-write が要るなら KV を除外) ③協調の要否。"Hyperdrive で既存 Postgres" は恒久的に妥当な選択であり踏み石ではない。
Egress 無料は販促ではなく構造(ネットワークで収益化、保存データでなく)。目安: Egress が総ストレージ費の30%超なら R2 圧勝。
| シナリオ(月) | S3 | R2 | 削減 |
|---|---|---|---|
| 1TB 保存/10TB egress | ~$740 | ~$15 | 98% |
| 10TB 保存/100TB egress | ~$7,200 | ~$150 | 98% |
| 動画基盤/~6PB egress | ~$50,000 | ~$600 | 99% |
S3 互換 API(操作の90%)・Workers バインディング・Sippy(遅延移行)/Super Slurper(一括)・R2 SQL($2.50/TB ≈ Athena の半額)。
認証済 WORM/Object Lock(SEC 17a-4)、深いアーカイブ(Glacier Deep)、S3 Select、同一リージョン内転送が既に無料、深い AWS 統合。
"エッジの AI = すべての都市ではなく、正しい大陸での AI"。
env.AI.run() 一本で 12+プロバイダ・70+モデル(OpenAI/Anthropic/Google/Alibaba…)に到達。プロバイダ切替は1行。AI Gateway が観測性・キャッシュ・フェイルオーバーを内蔵。
サーバーレス推論。OSS〜フロンティア級(Kimi K2.6, 262K 文脈)。proprietary 比 10〜500倍安い。
ベクトル DB。最大1536次元・1000万ベクトル/インデックス。名前空間でマルチテナント。
マネージド RAG。ハイブリッド検索(ベクトル+BM25)。最大5,000インスタンス/100万ファイル。
運用コストの95%超は推論(保存ではない)。10万クエリ/月: インデックス$6・保存$4 vs 推論$180〜500。最大の品質レバーはチャンク分割(意味単位300〜500トークン、10〜15%重複)。埋め込みモデルは混在禁止。
難しいのは AI ではなく制約。"すべてのツールが攻撃面"。Durable Objects がユーザー単位で競合排除・状態保持。1操作が 5〜50回 の LLM 呼び出しに膨張しうる。Code Mode で最大81%トークン削減。
請求書が来てから気づかないために。
I/O 主体ワークロードでは 70〜80% 削減も珍しくない。
差の源泉:
逆に高くなる場面: 計算主体ワークロード、超低トラフィック($5/月基本料を償却できない)、深い AWS サービス統合、既存リザーブド契約。Egress が請求の20%超なら Cloudflare 優位の目安。
デプロイは段階的ロールアウト(両バージョン同時稼働、ロールバックは再ルーティングで数秒)。1%→10%→50% をエラー/レイテンシ基準とともに。
合わなければ "使わない" も妥当な結論。だからこそ提案が信頼される。
| 制約 | 閾値 | 超えたら |
|---|---|---|
| リクエストあたりメモリ | 128 MB | Containers(最大12GB)/外部コンピュート |
| リクエストあたり CPU 時間 | 5分 | Containers/Queues/外部 |
| 単一 DB サイズ | 10 GB | 複数 D1/Hyperdrive で外部 DB |
| インバウンドプロトコル | HTTP のみ | 従来クラウド + LB(唯一の代替不能制約) |
| クロスパーティション・トランザクション | なし | Saga/Workflows/外部 DB |
| GPU 学習・カスタム CUDA | なし | ハイパースケーラ(Workers AI は推論のみ) |
4原則: カットオーバー前に共存/アトミックより漸進/可逆性を要件に/計測してから移行。一括移行ツールは "設計上あえて" 存在しない。
"どう大きくするか" でなく "どう自然に分割するか"。DB-per-tenant、object-per-user から始める。
既定で全展開。制約は規制のための限定のみ。データの局所性は物理が要求する分だけ。
合成可能な構成要素。前払いの利便性と引き換えに持続的な柔軟性を得る。
新規はまず Cloudflare で試作し、使わない理由を探す。
制約は明示的・原則は不変、具体値は常に最新ドキュメントで確認を。
出典: Jamie Lord「Architecting on Cloudflare」(2026年5月版) · architectingoncloudflare.com — 導入判断のための独自要約