Edge Functions - エッジコンピューティングの実践

8分 で読める | 2025.01.21

公式ドキュメント

Edge Functionsとは

RequestがNearby Edgeでredirect、header、cacheの軽い処理を受け、OriginとDataへ進む流れとruntime制約を示す図

Edge Functionsは、CDNに近い拠点でリクエストごとの小さな処理を動かす仕組みです。利用者に近い場所で応答できる可能性はありますが、常に高速になるわけではなく、処理内容・データの場所・プラットフォームの制約で決まります。

向く処理と向かない処理

向く処理理由
リダイレクト、ヘッダーの調整小さく、リクエスト単位で完結する
キャッシュの分岐利用者に近い場所で判断できる
軽い認証の入口トークンの形式確認などを早く行える
A/Bテストの振り分けルールが小さく、状態を持たない

重い画像変換、長時間の計算、強い一貫性が必要な書き込みは、一般的なサーバーや専用のバックグラウンド処理の方が合う場合があります。

実行環境の差を前提にする

Edge runtimeはブラウザに近いWeb標準APIを中心にし、Node.jsの全APIがそのまま使えるとは限りません。地域情報や待機処理などの拡張APIも、サービス固有です。例えばCloudflare Workersのrequest.cfはCloudflareの実行環境でだけ使えます。

export default {
  async fetch(request) {
    const country = request.cf?.country ?? "unknown";
    return Response.json({ country });
  },
};

このコードを別のEdge環境へ移す時は、同じプロパティがあると仮定せず、各サービスの公式ドキュメントと型定義を確認します。

安全なリダイレクトの例

リダイレクト先を利用者の入力でそのまま作ると、外部サイトへ誘導する脆弱性になり得ます。移行用の固定パスは同じオリジンのURLとして作ります。

export default {
  async fetch(request) {
    const url = new URL(request.url);
    if (url.pathname === "/old-page") {
      return Response.redirect(new URL("/new-page", url), 308);
    }
    return fetch(request);
  },
};

制約は数値を決め打ちしない

CPU時間、メモリ、リクエスト数、外部通信数、実行可能なAPIは、プランとサービスで異なり変更されます。設計前に採用するプラットフォームの現在の制限を確認し、失敗時の応答、タイムアウト、観測方法を決めます。

導入前の確認

  1. 利用者に近くても、データ取得先が遠くないか
  2. 必要なNode.js APIやネイティブモジュールが使えるか
  3. 失敗時にキャッシュまたはオリジンへ安全に切り替えられるか
  4. 地域情報やIPを扱う目的・保存期間が適切か

まとめ

Edge Functionsは、軽いリクエスト処理を利用者に近い場所へ置く選択肢です。速度だけを目的にせず、データの場所、実行環境の互換性、現在の制限と失敗時の動作を確認して採用します。

参考リソース

関連記事

← 一覧に戻る
PR
PR
PR
PR