エッジコンピューティングは速い。ユーザーに最も近いサーバーからレスポンスを返すから、東京からのアクセスには東京のエッジが、サンパウロからのアクセスにはサンパウロのエッジが応答する。
ただし速さの代償はコスト構造の複雑さ だ。僕は多言語ブログ(108記事×3言語)をVercelで運用して、無料プランのCPU上限に到達した。原因はエッジ特有の従量課金モデルを理解していなかったことだった。
この記事では、Vercel・AWS Lambda・Cloudflare Workersの従量課金モデルと、VPS・オンプレミスの固定費モデルを比較する。どちらが優れているという話ではない。どのプロジェクトにどのモデルが合うか を判断する材料を提供する。
エッジコンピューティングとは
従来のサーバーは1箇所(例: 東京)にある。世界中からアクセスが来ると、物理的な距離に応じてレスポンスが遅くなる。
エッジコンピューティングは、世界各地に分散したサーバー(エッジノード)でコードを実行する。CDNが静的ファイルをキャッシュするのと同じ発想で、動的な処理もユーザーの近くで実行 する。
代表的なプラットフォーム:
| プラットフォーム | エッジ拠点数 | 主な用途 |
|---|---|---|
| Vercel | 数十拠点 | Next.jsアプリのホスティング |
| AWS Lambda@Edge / CloudFront Functions | 400+拠点 | AWSインフラ上のサーバーレス処理 |
| Cloudflare Workers | 330+拠点 | 軽量なエッジ処理全般 |
共通するのは従量課金 だ。使った分だけ払う。使わなければ$0。この「使った分だけ」の定義がプラットフォームごとに異なり、そこが落とし穴になる。
従量課金の仕組み
Vercel(Functions / Fluid Compute)
Vercel Proは月額$20のプラットフォーム利用料に加え、$20分の使用クレジットが含まれる。クレジットを超えた分が従量課金になる。
| リソース | 含まれる量 | 超過単価 |
|---|---|---|
| Fluid Active CPU | $20クレジットで相殺 | $0.128/CPU時間〜(リージョン別) |
| Provisioned Memory | $20クレジットで相殺 | $0.0106/GB-hr〜 |
| Function Invocations | 100万回/月 | $0.60/100万回 |
| Fast Data Transfer | 1 TB/月 | $0.15/GB |
Active CPUの特徴: コードが実行されている時間のみ課金される。I/O待ち(DBクエリ、外部API呼び出し)の時間は課金されない。ただしProvisioned Memoryはインスタンスが生きている間ずっと課金される。
Hobbyプラン(無料) はActive CPUが月4時間まで。超過するとプロジェクトが一時停止する。
AWS Lambda
AWS Lambdaは2つの軸で課金される。
| リソース | 無料枠 | 超過単価 |
|---|---|---|
| リクエスト数 | 100万回/月 | $0.20/100万回 |
| コンピュート(GB-秒) | 40万GB-秒/月 | $0.0000166667/GB-秒(x86) |
ARM(Graviton2)を選ぶと約20%安くなる($0.0000133334/GB-秒)。
Lambdaの特徴: メモリ割り当て(128MB〜10,240MB)に比例してCPUパワーも上がる。メモリを増やすと1リクエストの実行は速くなるが、GB-秒あたりの料金は同じなので、** 実行時間が短縮された分だけコストも下がる可能性がある。**
Cloudflare Workers
Cloudflare Workersは最もシンプルな料金体系だ。
| リソース | 無料枠 | 有料プラン($5/月〜) |
|---|---|---|
| リクエスト数 | 10万回/日 | 1,000万回/月込、超過$0.30/100万回 |
| CPU時間 | 10ms/リクエスト | 3,000万CPU-ms/月込、超過$0.02/100万CPU-ms |
Workersの特徴: 帯域(データ転送)は無課金。レスポンスサイズに関係なく、リクエスト数とCPU時間だけで課金される。軽い処理を大量にさばく用途に強い。
固定費モデルの仕組み
VPS(Virtual Private Server)
VPSは月額固定でサーバーリソースを借りる。
| プロバイダー | メモリ | 月額 | 帯域 |
|---|---|---|---|
| さくらのVPS 2G | 2GB | ¥1,738 | 無制限 |
| XServer VPS 2G | 2GB | ¥990〜 | 無制限 |
| Hetzner CX22 | 4GB | €4.35(約¥700) | 20TB |
VPSの特徴: リクエスト数、CPU時間、帯域による追加課金がない。月間100万リクエストでも1,000万リクエストでも、月額は同じだ。サーバーのスペック(CPU・メモリ)が足りなくなったらプランを上げる。
オンプレミス
自社サーバーを自社で管理する。初期費用(サーバー購入、ラック、電源、回線)がかかるが、ランニングコストは電気代と回線費のみ。大規模トラフィックでは最もコストパフォーマンスが高い。
ただし障害対応、セキュリティ、ハードウェア更新をすべて自社で行う必要がある。
従量課金でハマるパターン
パターン1: 存在しないURLへのSSR
WordPressから移行したサイトで実際に起きた。旧URLを叩くボットが大量に来ると、Next.jsはSSR(サーバーサイドレンダリング)でページ生成を試みる。結果は404だが、SSRの実行分のCPU時間は課金される。
VPSなら404を返すだけで追加コストゼロ。エッジでは1リクエストごとにCPU時間が加算される。
対策: dynamicParams = false を設定して、存在しないURLでのSSRを阻止する。
パターン2: 全リクエストで実行されるMiddleware
next-intl等のi18nライブラリは、Middlewareで全リクエストのロケールを判定する。静的ファイル(CSS, JS, 画像)は除外されるが、ページへのアクセスは全てMiddlewareを通る。
僕のサイトではCPU消費の 14.1%がMiddleware だった。ページ本体は静的生成済みなのに、Middlewareは毎回実行される。
パターン3: 軽い処理 × 全ページ × 全アクセス
いいねボタンのAPI Route(Redis GETで数ミリ秒)を全記事ページに設置した。1リクエストのコストは微小だが、324ページ × 全訪問者で積み上がる。
VPSなら同じ処理がサーバー内で完結し、追加コストはゼロだ。
どのモデルを選ぶべきか
| 判断基準 | エッジ(Vercel等) | VPS | オンプレ |
|---|---|---|---|
| 多言語サイト、グローバルユーザー | 最適。各地域のエッジから配信 | 不利。単一リージョンからの配信 | 不利(CDN併用で緩和可能) |
| トラフィックが予測しにくい | 注意。従量課金が跳ねる可能性 | 安全。月額固定 | 安全 |
| トラフィックが安定して多い | 割高になる | コスパ良い | 最もコスパ良い |
| インフラ管理をしたくない | 最適。フルマネージド | 自分で管理 | 全て自分で管理 |
| SEOが最重要(Core Web Vitals) | 有利。エッジ配信でLCP短縮 | 地域によっては不利 | CDN併用で対応可能 |
具体的な目安
エッジが向いているケース:
- 多言語サイトでターゲットが世界中
- Googleの検索順位(Core Web Vitals)が収益に直結する
- 開発チームが小さく、インフラに時間をかけたくない
VPSが向いているケース:
- 単一言語・単一地域のサイト
- トラフィックが読めない(バズる可能性がある)
- 月額を確定させたい
オンプレが向いているケース:
- 大規模トラフィック(月間数千万PV以上)でコスト最適化が必要
- セキュリティ要件でクラウドに出せないデータがある
- 社内にインフラチームがいる
まとめ
エッジコンピューティングは「速い」と「安い」を両立できる——トラフィックが少ないうちは。 スケールするにつれて従量課金が効いてくる。
固定費モデル(VPS・オンプレ)は予測可能性が高い。リクエスト数が増えても月額は変わらない。ただしグローバル配信やインフラ管理のコストが別途発生する。
どちらが正解かはプロジェクト次第だ。 重要なのは、課金モデルの違いを理解したうえで選ぶこと。「無料で始められるから」だけでエッジを選ぶと、月末に予想外の請求が届くことがある。
Vercelの従量課金を正しくコントロールする方法はSpend Managementの設定ガイドで詳しく解説している。