Cloudflare サービス地図

← 勉強マップ / 学習用リファレンス

Cloudflare サービス地図

コード、データ、AI、配信、防御。Cloudflare の主要サービスを、役割と選び方と学ぶ順番で一枚にまとめました。

学習済み 0 / 0

概要

一言で言うと、ユーザーのリクエストが届く手前の、世界中の拠点(エッジ)に、計算も保存も防御も置く仕組みです。

Cloudflare はもともと CDN と DNS と防御の会社で、その同じ拠点にコードを動かす場所(Workers)が加わり、さらにデータの置き場と AI 推論が足されました。だから「Worker を中心に、必要なものを binding でつなぐ」と捉えると、全体が迷子になりません。

図の上段のうち、ユーザーとエッジの側は、ドメインを Cloudflare に向けるだけで効きます。下段の部品は、Worker のコードから呼びます。呼び出しには env.BUCKET のような binding を使い、API キーをコードに書きません。

全体を一望

タイルを押すと、そのサービスの説明に飛びます。枠の線で、学ぶ優先度が分かります。

データの置き場を選ぶ

Cloudflare で最初に迷うのは、どこにデータを置くかです。データの形で決まります。

サービスデータの形一貫性得意苦手
KVキーと値結果整合。書いた直後は拠点ごとに差が出る読み取りが多い設定値、フラグ、リダイレクト表頻繁な書き込み、正確なカウンタ
R2オブジェクト(ファイル)強整合大きなファイル、転送量の多い配信、バックアップ中身を検索すること
D1SQLite の表書き込みは単一のプライマリユーザーや記事などの関係データ巨大な単一 DB、書き込みの大量並列
Durable ObjectsID ごとの状態ID 単位で強整合排他制御、順序保証、WebSocketID をまたぐ集計
Vectorizeベクトル書き込みは非同期で反映RAG、類似検索完全一致の検索
Hyperdrive外部 DB のままDB 側に従う既存資産の再利用DB が遠いと遅い

まず触る

Worker を作って、R2、KV、D1 の 3 つを binding でつなぐ最小の形です。

ターミナル
npm create cloudflare@latest my-worker
cd my-worker
npx wrangler r2 bucket create my-bucket
npx wrangler dev      # ローカルで起動
npx wrangler deploy   # 本番へ反映
npx wrangler tail     # 本番のログをその場で見る
wrangler.jsonc
{
  "name": "hello-edge",
  "main": "src/index.js",
  "compatibility_date": "2026-10-01",
  // binding 名がそのまま env.XXX になる
  "r2_buckets": [{ "binding": "BUCKET", "bucket_name": "my-bucket" }],
  "kv_namespaces": [{ "binding": "KV", "id": "YOUR_KV_ID" }],
  "d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "YOUR_D1_ID" }]
}
src/index.js
export default {
  async fetch(request, env) {
    const url = new URL(request.url);

    if (url.pathname === "/file") {
      const obj = await env.BUCKET.get("hello.txt");
      return obj ? new Response(obj.body) : new Response("not found", { status: 404 });
    }
    if (url.pathname === "/flag") {
      const v = await env.KV.get("feature-x");
      return Response.json({ enabled: v === "on" });
    }
    const row = await env.DB.prepare("SELECT COUNT(*) AS n FROM notes").first();
    return Response.json(row);
  },
};

compatibility_date は、その日付時点の Workers の挙動に固定する設定です。新しく作るときは今日に近い日付にし、後から上げるときは変更点を確認してから上げます。

学ぶ順番

依存関係の順に並べています。各ステップは、1 日で終わる小さな課題を 1 つ作れば十分です。

    用語集

    エッジ
    ユーザーに近い世界中の拠点。Cloudflare はここでコードを動かします。
    binding
    Worker のコードに、他のサービスを env.名前 として差し込む仕組み。設定は wrangler の設定ファイルに書きます。
    isolate
    Workers が使う、V8 の軽い実行単位。コンテナや VM より起動が軽く、1 つのプロセスに多数が同居します。
    wrangler
    Workers の公式 CLI。作成、ローカル実行、デプロイ、ログ、各種リソースの作成までを担います。
    compatibility_date
    Workers の挙動を、指定した日付の時点に固定する設定。ランタイムの更新で突然壊れないための仕組みです。
    Smart Placement
    Worker を、ユーザーの近くではなくバックエンドの近くで動かす設定。DB の往復が多い処理で効きます。
    egress
    外へ出ていくデータ転送のこと。多くのクラウドでは課金対象ですが、R2 では転送料がかかりません。