Serverless コンピューティングでは、サーバーを管理せずにコードを実行できます。関数を書いてデプロイすれば、プラットフォームがスケーリング、可用性、インフラストラクチャを処理します。2026年、3つのプラットフォームが serverless の分野を支配しています:AWS Lambda、Vercel Serverless Functions、Cloudflare Workers。それぞれ異なる強みとトレードオフがあります。
この記事では、実際の例、パフォーマンスの考慮事項、料金の内訳を使って比較します。
Serverless の仕組み
関数をデプロイします。リクエストが来ると、プラットフォームは:
- 実行環境を起動する(またはウォーム状態のものを再利用する)
- 関数を実行する
- レスポンスを返す
- アイドル時にゼロにスケールする(アイドル時間に料金は発生しない)
プラットフォーム概要
AWS Lambda
オリジナルの serverless プラットフォーム(2014年に開始)。最も成熟し機能が豊富で、AWS エコシステムとの深い統合があります。
// AWS Lambda handler export const handler = async (event) => { const body = JSON.parse(event.body); const result = await processData(body); return { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(result), }; };
Vercel Serverless Functions
Next.js とフロントエンドデプロイメントワークフローに緊密に統合されています。関数はフロントエンドと一緒にゼロコンフィグでデプロイされます。
// app/api/hello/route.ts (Next.js App Router) import { NextResponse } from 'next/server'; export async function GET(request: Request) { const { searchParams } = new URL(request.url); const name = searchParams.get('name') || 'World'; return NextResponse.json({ message: `Hello, ${name}!` }); }
Cloudflare Workers
世界中の300以上の都市にある Cloudflare のエッジネットワーク上で実行されます。Node.js の代わりに V8 エンジン(Chrome と同じ)を使用するため、非常に高速なコールドスタートを実現します。
// Cloudflare Worker export default { async fetch(request, env) { const url = new URL(request.url); const name = url.searchParams.get('name') || 'World'; return new Response( JSON.stringify({ message: `Hello, ${name}!` }), { headers: { 'Content-Type': 'application/json' } } ); }, };
機能比較
| 機能 | AWS Lambda | Vercel Functions | Cloudflare Workers |
|---|---|---|---|
| ランタイム | Node.js, Python, Go, Rust, Java, .NET | Node.js, Python, Go, Ruby | V8 Isolates (JS/TS, Rust via WASM) |
| 最大実行時間 | 15分 | 60秒 (Hobby), 300秒 (Pro) | 30秒(無料)、15分(有料) |
| メモリ | 128MB - 10GB | 1024MB - 3008MB | 128MB |
| コールドスタート | 100-500ms | 100-300ms | < 5ms |
| デプロイ場所 | 単一リージョン(またはマルチは手間がかかる) | 複数リージョン | 300以上のエッジロケーション |
| 最大ペイロード | 6MB(同期)、256KB(非同期) | 4.5MB | 100MB |
| 内蔵ストレージ | なし(DynamoDB、S3を使用) | なし(外部DBを使用) | KV、D1 (SQLite)、R2(S3互換) |
| 料金モデル | リクエストごと + 実行時間 | プランに含まれる | リクエストごと + 実行時間 |
| 無料枠 | 月100万リクエスト | 月10万 (Hobby) | 日10万リクエスト |
コールドスタート
コールドスタートは、新しい関数インスタンスを初期化するのにかかる時間です。これは serverless における最大のパフォーマンス上の懸念事項です。
| プラットフォーム | 典型的なコールドスタート | 理由 |
|---|---|---|
| Cloudflare Workers | < 5ms | V8 アイソレート、完全なランタイム不要 |
| Vercel Functions | 100-300ms | エッジまたはリージョナルの Node.js ランタイム |
| AWS Lambda | 100-500ms | 完全なコンテナ初期化 |
| AWS Lambda (Java) | 1-5秒 | JVM 起動のオーバーヘッド |
Cloudflare Workers はコンテナの代わりに V8 アイソレートを使用するため、コールドスタートで圧倒的な差をつけて勝利しています。
料金比較
無料枠
| プラットフォーム | 無料リクエスト | 無料コンピュート |
|---|---|---|
| AWS Lambda | 月100万 | 400,000 GB-秒 |
| Vercel | 月10万 | Hobbyプランに含まれる |
| Cloudflare Workers | 日10万(月約300万) | 呼び出しごとに10ms CPU |
大規模利用時(月1000万リクエスト、平均実行時間50ms)
| プラットフォーム | 推定月額コスト |
|---|---|
| AWS Lambda | 約$2.50(リクエスト)+ 約$4.15(コンピュート)= 約$6.65 |
| Vercel | 月$20(Proプラン、関数を含む) |
| Cloudflare Workers | 月$5(有料プラン、1000万リクエストを含む) |
ほとんどのユースケースでは、Cloudflare Workers が最も安価です。Vercel の料金はシンプルですが、プラットフォーム全体(ホスティング、CDN、アナリティクス)を含んでいます。AWS Lambda は最もきめ細かい料金体系を持っています。
実際のユースケース
AWS Lambda:最適な用途
- 複雑なバックエンドワークフロー - step functions、イベント駆動アーキテクチャ
- AWSサービスとの統合 - S3 トリガー、DynamoDB ストリーム、SQS キュー
- 長時間実行タスク - 最大15分の実行時間
- 多言語チーム - 最も幅広いランタイムをサポート
Vercel Functions:最適な用途
- Next.js アプリケーション - ゼロコンフィグの API ルート
- フロントエンド重視のチーム - フロントエンドとバックエンドを一緒にデプロイ
- 迅速なプロトタイピング - git push でデプロイ
- Jamstack アーキテクチャ - 静的フロントエンド + serverless API
// app/api/subscribe/route.ts import { NextResponse } from 'next/server'; export async function POST(request: Request) { const { email } = await request.json(); // Validate if (!email || !email.includes('@')) { return NextResponse.json( { error: 'Invalid email' }, { status: 400 } ); } // Save to database await db.subscribers.create({ email }); return NextResponse.json({ success: true }); }
Cloudflare Workers:最適な用途
- 低レイテンシー API - 世界中の300以上の場所でコードが実行される
- エッジコンピューティング - レスポンスの変換、A/Bテスト、パーソナライゼーション
- 大量アクセス API - 大規模で最も安価、寛大な無料枠
- グローバルアプリケーション - KV と D1 でユーザーの近くにデータを配置
// Edge-side A/B test export default { async fetch(request, env) { const url = new URL(request.url); // Assign user to variant const cookie = request.headers.get('Cookie') || ''; let variant = cookie.includes('ab=b') ? 'b' : 'a'; if (!cookie.includes('ab=')) { variant = Math.random() < 0.5 ? 'a' : 'b'; } // Fetch the appropriate version const response = await fetch(`${url.origin}/variants/${variant}`); const newResponse = new Response(response.body, response); // Set cookie for consistent experience newResponse.headers.set('Set-Cookie', `ab=${variant}; Path=/; Max-Age=86400`); return newResponse; }, };
いつどれを選ぶか
AWS Lambda を選ぶべき場合:
- 既に AWS エコシステムに投資している
- 長時間実行の関数が必要(最大15分)
- 複雑なイベント駆動アーキテクチャが必要
- JavaScript 以外のランタイムが必要(Python、Go、Rust、Java)
Vercel Functions を選ぶべき場合:
- Next.js またはフロントエンドフレームワークで開発している
- 最もシンプルなデプロイ体験を望んでいる(git push)
- チームがフロントエンド重視
- ホスティング + 関数 + CDN を1つのプラットフォームで必要としている
Cloudflare Workers を選ぶべき場合:
- グローバルで可能な限り低いレイテンシーが必要
- 大規模で最も安価なオプションを望んでいる
- エッジコンピューティング機能が必要
- コールドスタート時間がユースケースにとって重要
組み合わせて使えるか?
もちろんです。一般的なアーキテクチャ:
- Cloudflare Workers:エッジルーティング、キャッシング、セキュリティ
- Vercel Functions:フロントエンド API ルート、SSR
- AWS Lambda:重いバックエンド処理、スケジュールタスク、イベントパイプライン
結論
Serverless は大きく成熟しました。2026年、AWS Lambda、Vercel Functions、Cloudflare Workers の選択は、あなたのスタックと優先事項によって決まります:
- 最もシンプルな開発者体験:Vercel
- 最も強力で柔軟:AWS Lambda
- 最高のパフォーマンスと価格:Cloudflare Workers
3つとも本番環境に対応し、実戦で検証されています。現在のスタックに合ったものから始めて、ニーズの成長に合わせて拡張しましょう。