サーバーレスAPIとは
サーバーレスAPIは、サーバーの管理・プロビジョニングなしにAPIを構築・デプロイできるアーキテクチャです。リクエストが来たときだけ関数が実行され、使った分だけ課金されます。スケーリングはプラットフォームが自動で行うため、運用負荷が大幅に削減されます。
主要なサーバーレスAPIプラットフォーム
AWS Lambda + API Gateway
- 特徴:豊富なAWSエコシステム連携・高い柔軟性
- 料金:月100万リクエスト・400,000 GB秒まで無料
- ランタイム:Node.js・Python・Java・Go等
// AWS LambdaのAPIハンドラー(Node.js)
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
export const handler = async (
event: APIGatewayProxyEvent
): Promise => {
try {
const { id } = event.pathParameters || {};
const user = await getUserById(id);
if (!user) {
return {
statusCode: 404,
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ error: 'User not found' })
};
}
return {
statusCode: 200,
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'public, max-age=60'
},
body: JSON.stringify(user)
};
} catch (err) {
return {
statusCode: 500,
body: JSON.stringify({ error: 'Internal Server Error' })
};
}
};
Vercel Serverless Functions(Next.js App Router)
// app/api/users/[id]/route.ts
import { NextRequest, NextResponse } from 'next/server';
export async function GET(
request: NextRequest,
{ params }: { params: { id: string } }
) {
const user = await getUserById(params.id);
if (!user) {
return NextResponse.json({ error: 'Not Found' }, { status: 404 });
}
return NextResponse.json(user);
}
export const runtime = 'edge'; // Edgeランタイムを使用(高速)
Cloudflare Workers
// Cloudflare Workers
export default {
async fetch(request: Request, env: Env): Promise {
const url = new URL(request.url);
const id = url.pathname.split('/').pop();
// Workers KVからデータ取得
const userData = await env.USERS_KV.get(id, 'json');
if (!userData) {
return new Response('Not Found', { status: 404 });
}
return new Response(JSON.stringify(userData), {
headers: { 'Content-Type': 'application/json' }
});
}
};
コールドスタートの対策
- AWS Lambda Provisioned Concurrency:事前にウォームアップしたインスタンスを予約
- Lambda SnapStart:Java 11以降のスナップショット起動で起動時間を大幅削減
- Edge Functions:Vercel Edge Functions・Cloudflare Workersはコールドスタートがほぼなし
- 関数の軽量化:依存パッケージを最小化してzip圧縮サイズを削減
まとめ
サーバーレスAPIはスモールスタートから大規模なAPIまで幅広く対応できる現代的なアーキテクチャです。Vercel FunctionsはNext.jsと自然に統合でき、Cloudflare Workersはグローバルなエッジ実行で最速のレイテンシを実現します。AWS LambdaはAWSの豊富なエコシステムと連携できます。用途・チームのスキル・インフラ環境に合わせて選択してください。