VercelやAWS Lambdaなどのエッジプラットフォームはリクエスト数とCPU時間で課金される。VPSはトラフィックに関係なく月額固定。どちらが正解かは、トラフィックパターン・対象地域・チーム規模で決まる。
エッジコンピューティングは速い。ユーザーに最も近いサーバーからレスポンスを返すから、東京からのアクセスには東京のエッジが、サンパウロからのアクセスにはサンパウロのエッジが応答する。
ただし速さの代償はコスト構造の複雑さ だ。僕は多言語ブログをVercelで運用して、無料プランのCPU上限に到達した。原因はエッジ特有の従量課金モデルを理解していなかったことだった。
この記事では、Vercel・AWS Lambda・Cloudflare Workersの従量課金モデルと、VPS・オンプレミスの固定費モデルを比較する。どちらが優れているという話ではない。どのプロジェクトにどのモデルが合うか を判断する材料を提供する。
エッジコンピューティングとは
従来のサーバーは1箇所(例: 東京)にある。世界中からアクセスが来ると、物理的な距離に応じてレスポンスが遅くなる。
エッジコンピューティングは、世界各地に分散したサーバー(エッジノード)でコードを実行する。CDNが静的ファイルをキャッシュするのと同じ発想で、動的な処理もユーザーの近くで実行 する。
代表的なプラットフォーム:
| プラットフォーム | エッジ拠点数 | 主な用途 |
|---|---|---|
| Vercel | 126+ PoPs(51カ国) | Next.jsアプリのホスティング |
| AWS Lambda@Edge / CloudFront Functions | 400+拠点(750+ PoPs) | AWSインフラ上のサーバーレス処理 |
| Cloudflare Workers | 330+都市(100+カ国) | 軽量なエッジ処理全般 |
共通するのは従量課金 だ。使った分だけ払う。使わなければ$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〜(36ヶ月契約) | 無制限 |
| Hetzner CX23 | 4GB | €3.49(約¥560) | 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のHobbyプランやCloudflare Workersの無料枠なら$0で運用できる。月間数万回のFunction Invocationsを常に発生させるようになったら、月額$4〜12のVPSのほうがコスパが良くなるケースが増える。
Vercelの請求額を事前に把握する方法は?
VercelのUsage DashboardでActive CPU・Memory・Invocations・Data Transferのリアルタイム消費量を確認できる。Spend Managementで月間上限を設定しておけば、想定外の請求を防げる。$20のProクレジットが最初の$20分を相殺する。
Cloudflare Workersは本当に帯域無料?
本当だ。Cloudflare Workersはデータ転送(egress)を一切課金しない。課金されるのはリクエスト数とCPU時間だけ。レスポンスサイズが大きいAPIやサービスには特に有利。
Vercelの「Active CPU時間」って具体的に何をカウントするの?
コードが実際に実行されている時間だけだ。データベースへのクエリや外部APIへのfetch呼び出しなどのI/O待ちはActive CPUにカウントされない。ただしProvisioned Memoryはインスタンスが生きている間ずっと(アイドル時間含む)課金される点に注意。
VPSの前にCDNを置けばエッジと同等のパフォーマンスになる?
静的アセットに関してはかなり近づける。Cloudflare CDN(無料枠あり)やAWS CloudFrontを前段に置けば、画像・CSS・JSは世界中のPoPから配信される。ただし動的リクエスト(SSR、API Route)は単一リージョンのVPSが処理するので、動的コンテンツのレイテンシーはエッジに劣る。
同じワークロードでAWS LambdaとVercelどちらが安い?
ワークロードによる。Lambdaの無料枠(100万リクエスト + 40万GB-秒/月)は手厚く、リクエスト単価も安い($0.20/100万 vs Vercelの$0.60/100万)。ただしLambdaはAPI GatewayやCloudFrontの設定が別途必要で、Vercelが自動で行ってくれることを自分で構築する必要がある。Next.jsアプリなら、Vercelの開発体験がプレミアム分を正当化することが多い。
オンプレミスを検討すべきタイミングは?
月間数千万PVで安定したトラフィックがあるとき、コンプライアンス要件でデータを自社外に出せないとき、社内にインフラチームがいるとき。ほとんどの中小規模プロジェクトでは、オンプレの運用負荷がコスト削減を上回る。
まとめ
エッジコンピューティングは「速い」と「安い」を両立できる——トラフィックが少ないうちは。 スケールするにつれて従量課金が効いてくる。
固定費モデル(VPS・オンプレ)は予測可能性が高い。リクエスト数が増えても月額は変わらない。ただしグローバル配信やインフラ管理のコストが別途発生する。
どちらが正解かはプロジェクト次第だ。 重要なのは、課金モデルの違いを理解したうえで選ぶこと。「無料で始められるから」だけでエッジを選ぶと、月末に予想外の請求が届くことがある。
Vercelの従量課金を正しくコントロールする方法はSpend Managementの設定ガイドで詳しく解説している。
関連記事: