独立サイトのエッジコンピューティング:Cloudflare Workers/Vercel Edgeの活用シーンと性能

エッジコンピューティング(Edge Computing)の本質は「計算をユーザーに最も近いノードへ移す」ことであって、「すべてのコードをエッジで動かす」ことではありません。Cloudflare Workersの無料...

边缘计算:三个值得用、两个不该碰的场景Edge computing: three good fits, two traps 边缘函数不是万能提速器 —— 只有离用户近才有意义Edge is not a magic speed-up — proximity is the only point 适合:A/B分流Good: A/B split 适合:地理重定向Good: geo redirect 适合:边缘鉴权Good: edge auth 按cookie分流,不走源站Split by cookie, no origin roundtrip 分流延迟<10毫秒Latency <10ms 按国家/语言跳对应落地页Route by country/language TTLFB改善50至150毫秒TTFB gain 50-150ms JWT校验在边缘完成JWT verify at edge 省源站往返1次Save 1 origin roundtrip 性能对比(TTFB)TTFB comparison 传统源站渲染:300至800毫秒Origin SSR: 300-800ms 边缘函数渲染:30至100毫秒Edge render: 30-100ms 纯静态CDN:10至50毫秒Pure static CDN: 10-50ms 不该碰的场景When NOT to use edge 长计算(>50毫秒CPU)超时Long compute >50ms: timeout 数据库直连,延迟比源站还高Direct DB: worse latency 大量文件读写受限于内存File IO limited by memory 红线:边缘函数CPU时间上限50毫秒(Cloudflare免费版),超过直接1102错误Red line: 50ms CPU limit on free tier; over = 1102 error 判断标准:你的请求是否要在源站跑数据库查询?要的话边缘帮不上忙,只会更慢Rule: if you hit a DB, edge won’t help — it gets worse
エッジコンピューティングが向く3つのシーンと性能の目安

独立サイトのエッジコンピューティング:Cloudflare Workers/Vercel Edgeの活用シーンと性能

結論から言うと:エッジコンピューティング(Edge Computing)の本質は「計算をユーザーに最も近いノードへ移す」ことであって、「すべてのコードをエッジで動かす」ことではありません。Cloudflare Workersの無料版はCPU時間の上限が50ミリ秒、Vercel Edge Functionsは制限が長い代わりにコールドスタートが遅くなります。エッジが本当に向くのは、地理的なリダイレクト、A/Bテストの振り分け、軽量な認証の3つだけです。直感に反しますが、ページがデータベースを参照するなら、ロジックをエッジへ移すとかえって遅くなります。エッジノードからデータベースまでのネットワーク距離が、オリジンからデータベースまでより遠いからです。

1. エッジコンピューティングとは何か、CDNとの関係

従来のCDNは静的ファイルのキャッシュだけを行い、ユーザーのリクエストが来たらそのままキャッシュを返します。エッジコンピューティングはCDNノード上で短いJavaScriptコードを動かし、レスポンスを返す前にロジックを判断します。ユーザーの位置情報で表示ページを切り替え、cookieで表示するバージョンを決め、JWTが有効かを検証する、といった処理です。このロジックはユーザーから数十ミリ秒のノードで実行され、オリジンへ戻る必要がありません。

サーバーサイドレンダリング(SSR)との違い:SSRは自社のサーバーで動くため、世界中のユーザーが海を越えてそのサーバーへ接続します。エッジ関数は世界300以上のノードで同時に動くので、ユーザーは最寄りのノードに接続するだけで済みます。越境B2Bの独立サイトでは、この距離の差がTTFBを100ミリ秒にするか800ミリ秒にするかを直接左右します。CDNとエッジの関係はこちらをご覧くださいCDNグローバル高速化。

直感に反する判断:エッジコンピューティングは「より速いサーバー」ではなく「より小さいサーバー」です。各エッジ関数のCPU時間には厳しい上限があり、重い計算はできません。200ミリ秒かかるデータベースクエリのロジックをエッジへ移すと、オリジンで動かすより3倍以上遅くなります。エッジノードからデータベースまでのネットワーク距離が遠いからです。

実行環境 実行場所 CPU時間の上限 コールドスタート データベースアクセス 料金モデル
従来のサーバー(VPS) 単一のデータセンター 厳密な上限なし なし(常駐) ローカル/社内ネットワーク、高速 月額固定
Cloudflare Workers 世界300以上のノード 無料10ミリ秒/有料30ミリ秒 ほぼゼロ(V8アイソレート) 外部データベースへの接続が必要、低速 リクエスト数に応じた課金
Vercel Edge Functions 世界25以上のノード 最長30秒 10〜50ミリ秒 Edge DBに対応 呼び出し時間に応じた課金
AWS Lambda@Edge 世界のCloudFrontノード 最長5秒 10〜100ミリ秒 パブリックネットワーク経由でRDSへ接続 リクエスト数+時間

2. エッジコンピューティングを使う価値が本当にある3つのシーン

最初のケース:地理位置と言語によるリダイレクト。海外向けサイトで、ドイツのユーザーがアクセスすると自動的に/de/のドイツ語版へ、中東のユーザーは/ar/のアラビア語版へ飛びます。従来の方法はサーバー上でIPデータベースを参照して判定し、リクエストのたびにオリジンサーバーへ戻る必要がありました。Cloudflare Workersで10行のコードを書けば、エッジノードでIPの国に基づいて直接301を返せます。TTFBは400ミリ秒から50ミリ秒に短縮されます。多言語サイトでのhreflangの設定方法はこちらHreflang多言語対応。

2つ目のケース:A/Bテストの振り分け。トップページを2つのバージョンにして、50%のユーザーにA版、50%にB版を見せたいとします。従来の方法はサーバー側でcookieを読み取ってどちらをレンダリングするか決めていました。エッジでの方法はもっと簡単です。Workersがcookieのハッシュ値に基づいて、HTML内のリソースパスを書き換えたり、異なる変数を注入したりします。オリジンサーバーはまったく関与しません。振り分け自体は10ミリ秒以内に完了し、TTFBには影響しません。

3つ目のケース:軽量な認証とbot対策。ユーザーがログイン後に送るリクエストは、まずエッジでJWTの有効性を検証し、無効なら直接401を返してオリジンサーバーには戻しません。これによりオリジンサーバーは正当なリクエストだけを処理し、帯域とCPUを節約できます。bot対策もエッジで行えます。不審なUAやリクエスト頻度の高さを検知したら、直接チャレンジページを返し、リクエストをオリジンサーバーに到達させません。

シナリオ エッジでの実装方法 パフォーマンス効果 開発工数 推奨優先度
地理リダイレクト Workersがrequest.cf.countryを読み取る TTFBが50〜150ミリ秒短縮 半日 高
A/Bテスト振り分け Workersがcookieハッシュで振り分け TTFBは増加しない 1〜2日 中
JWTエッジ認証 エッジでtokenを検証し、無効なら即拒否 オリジンサーバー負荷が20%〜40%削減 2日 高
bot対策/レート制限 エッジでUAと頻度を検知 悪意あるリクエストをオリジンに通さない 1日 高
パーソナライズページのレンダリング エッジでHTMLフラグメントを組み立て 繰り返し使うフラグメントにのみ有効 3〜5日 低

3、エッジコンピューティングを使うべきでない2つの落とし穴

1つ目の落とし穴:データベースクエリをエッジに移すこと。「エッジコンピューティングはすごい」と思って、ユーザーセンターのクエリ処理までエッジに移す人が多くいます。しかしエッジノードは遠隔のデータベースに接続するため、1回のクエリのネットワーク往復だけで200ミリ秒かかり、オリジンサーバーのローカルクエリより5倍遅くなります。エッジ関数は「ステートレスで軽い計算、キャッシュ頼み」の処理に向いており、「データベースへの問い合わせが必要」な処理には向いていません。

2つ目の落とし穴:SSR全体をエッジに移すこと。Next.jsのEdge Runtimeモードは確かにVercelのエッジノードでReactレンダリングを実行できますが、複雑なページのレンダリングには100ミリ秒以上のCPU時間がかかることがあり、無料版の制限に引っかかったり、コールドスタートで初回訪問ユーザーを50ミリ秒余計に待たせたりします。複雑なサーバーサイドレンダリングは依然としてオリジンサーバーで実行すべきで、エッジは軽量な中間層に徹するべきです。サードパーティスクリプトの管理方法はこちらサードパーティスクリプトの管理。

場面別の例:海外展開するSaaS製品で、ユーザーのダッシュボード画面がデータベースを参照して描画する必要があったとします。チームは最初、Vercel Edge Runtimeでこの画面を書き直せることに興奮しましたが、エッジノードからAWS RDSデータベースまでの遅延が80ミリ秒あり、描画時間を加えるとTTFBは250ミリ秒から450ミリ秒に逆に増えてしまいました。その後、ダッシュボードをオリジンに戻し、エッジではログイン検証とルーティングの振り分けだけを行うようにしたところ、TTFBは250ミリ秒に戻りました。

落とし穴 一見よさそうに見える点 実際の結果 正しい方法
データベース参照をエッジに移す 「ユーザーに近い」 エッジからDBはネットワークが遠く、遅延が3〜5倍に増える DB参照はオリジンに残し、エッジはキャッシュ読み取りだけにする
サイト全体のSSRをエッジで動かす 「グローバル高速化」 CPU上限超過やコールドスタートの遅さで、TTFBが逆に増える エッジは中間層だけにして、描画はオリジンに残す
大量のファイル読み書き 「ローカル処理」 エッジには永続ディスクがなく、メモリも限られる ファイル操作はオブジェクトストレージAPI経由にする
長時間の計算処理 「並列で速くなる」 CPUタイムアウトで1102エラーになる 小さな処理に分割するか、メッセージキュー経由にする

4. コストと選定:Cloudflare Workers vs Vercel Edge

Cloudflare WorkersとVercel Edge Functionsは、現在の独立系サイトで最もよく使われる2つのエッジプラットフォームです。選定は主に技術スタックとトラフィック規模で決まります。Cloudflare WorkersはV8 isolateを使い、コールドスタートがほぼゼロで、無料版は1日10万リクエストまで。軽量なルーティングや認証に向いています。Vercel Edge FunctionsはNext.jsと深く統合されており、すでにNext.jsを使っているなら移行コストが最も低いですが、コールドスタートはWorkersより遅いです。

コスト面では、Cloudflareの有料版は月5ドルからで1000万リクエストを含みます。VercelのPro版は月20ドルからで、エッジ関数は実行時間に応じた課金のため、トラフィックが増えると請求額が急速に膨らみます。中小B2Bの独立系サイトで月間PVが10万以内なら、Cloudflareの無料版でほぼ十分です。性能の監視方法はこちらをご覧くださいサイト監視とアラート。

次元 Cloudflare Workers Vercel Edge Functions AWS Lambda@Edge
コールドスタート ほぼゼロ(V8) 10〜50ミリ秒 10〜100ミリ秒
無料枠 10万リクエスト/日 100GB-時間/月 100万リクエスト/月
有料プラン開始価格 5ドル/月 20ドル/月 従量課金、月額定額なし
開発言語 JavaScript/TypeScript JavaScript/TypeScript Node.js/Python
向いているフレームワーク 純粋な関数/ミドルウェア Next.jsと深く統合 AWSエコシステムのサイト
ノードのカバレッジ 300以上の都市 25以上の国 CloudFrontでグローバル展開

FAQ よくある質問

Cloudflare Workersの無料版は本当に十分ですか?
B2Bの独立系サイトで月間PVが10万以内なら、無料版でまったく十分です。無料枠は1日10万リクエスト、CPU時間は1リクエストあたり10ミリ秒です。月間PVが5万程度なら、1日平均1700リクエストで、無料枠までまだ60倍の余裕があります。本当に気にすべきなのはリクエスト数ではなくCPU時間です。Workersのコードが重すぎると、1回のCPUが10ミリ秒を超えた時点でエラーになります。
エッジ関数とCDNキャッシュはどんな関係ですか?
CDNキャッシュは静的ファイルをそのまま返し、コードは実行しません。エッジ関数は返す前にロジックを走らせ、何をどう返すかを決めます。たとえるなら、CDNは倉庫からの直送、エッジ関数は倉庫の入口に仕分け係を置くイメージです。両者を組み合わせるのが最も一般的で、エッジ関数がルーティングと認証を担当し、通過したらCDNがキャッシュ済みのHTMLをそのまま返すので、計算が重複しません。
Vercel Edge FunctionsとCloudflare Workersはどちらが速い?
ケースによります。軽量な純粋計算なら、Cloudflare Workersはコールドスタートがほぼゼロで、通常Vercelより20〜50ミリ秒速いです。Next.jsアプリなら、VercelはNext.jsと深く統合されており、フレームワークレベルの最適化によって全体のTTFBがむしろ安定します。選定では単発のレイテンシだけでなく、チームの技術スタックを見てください。すでにNext.jsを使っているならVercel、すでにCloudflare CDNを使っているならWorkersを選び、技術スタックの断片化を減らしましょう。
エッジ関数でSEO対策はできますか?
一部はできますが、主力にはなりません。エッジ関数でできるSEO施策は、クローラーのUAに応じて最適化版を返す、地域ごとに異なるhreflangタグを返す、悪質なクローラーを遮断する、などです。ただし本来のSEOコンテンツ最適化(タイトル、H1、内部リンク、構造化データ)はビルド時にHTMLへ書き込むべきで、エッジ関数による動的注入に頼らないでください。GoogleのクローラーはJSを実行しますが、エッジで注入した内容は不安定なので、HTMLに直接書くほうが確実です。
エッジ関数でエラーが出たらどうロールバックする?
CloudflareもVercelもバージョンのロールバックに対応しています。デプロイごとに履歴が自動保存され、コンソールからワンクリックで前のバージョンに戻せます。デプロイ手順にはカナリアリリースを加えるのがおすすめです。まずテスト環境で検証し、次にトラフィックの割合を指定して段階的に本番へ出します。問題が起きても、ロールバックは通常30秒以内に完了します。また、エッジ関数のエラー監視はSentryかプラットフォーム標準のログにつなぎましょう。監視なしは未リリースと同じです。
どういう場合にエッジコンピューティングはサイトを速くしない?
速くならないのは3つの場合です。第一に、オリジンサーバーがすでに世界中のユーザーの近くにある場合(たとえばユーザーが国内にいて、オリジンも国内にある)、エッジに移すとかえって遠回りになります。第二に、ページの主要コンテンツがデータベースクエリ由来の場合、エッジは役に立ちません。第三に、リクエスト量が非常に少ない場合(月間PVが1万未満)、エッジのコールドスタートのコストがメリットを上回ります。判断基準は、まずオリジンサーバーのTTFBを測ることです。すでに200ミリ秒以内なら、エッジ最適化の余地は大きくありません。

最後に

エッジコンピューティングは”小さくて美しい”最適化手段であり、サイト全体のアーキテクチャを変える革命ではありません。解決するのは”リクエストのたびにオリジンサーバーへ戻る”という具体的なボトルネックで、軽量なルーティング、認証、振り分けといったロジックに向いています。”エッジに載せればサイト全体が2倍速くなる”という期待で取り組むと、おそらく失望します。遅さの大部分はデータベースクエリとサードパーティスクリプトにあり、ネットワーク距離にはないからです。

まずは最小のユースケースから始めましょう。Cloudflare Workersで地理リダイレクトを組み、ドイツのユーザーを自動でドイツ語ページへ誘導します。この変更なら半日でリリースでき、性能面の効果はすぐに表れ、リスクも最も低いです。2週間安定して運用できたら、A/Bテストによる振り分けやエッジでの認証を検討しましょう。最初からサイト全体をエッジに移そうと考えないことです。

覚えておきたい一言:エッジコンピューティングはユーザーに最も近い配送拠点であって、データベースに最も近い倉庫ではありません。仕分けの仕事は任せても、倉庫の仕事まで持ち込まないようにしましょう。

环形山
环形山 クレーター専門家

公式アカウント · 環形山 Crater

環形山(Crater)は、WordPress独立サイト開発+Google SEO+GEO全域成長に特化した海外展開支援会社で、スマートハードウェア、産業機器、SaaS、新エネルギーなどの分野を手がけています。

プロダクト能力方法論ホワイトペーパー業界レポート
965件のシェア
78件のナレッジベース