アーキテクチャパターン

サーバーレスパターン

FaaS(Function as a Service)を活用した代表的なサーバーレスアーキテクチャパターンと、AWS・Azure・GCP での実装例を解説します。

サーバーレスパターンとは

サーバーレスパターンとは、AWS Lambda・Azure Functions・Google Cloud Functions などの FaaS を中心に、クラウドマネージドサービスを組み合わせてシステムを構築する設計パターンの体系です。サーバーの管理を完全にクラウドプロバイダーに委ねながら、様々なユースケースに対応する構成を実現します。

各パターンはイベント(HTTPリクエスト・ファイルアップロード・メッセージ・タイマー等)をトリガーとして関数を実行する「イベント駆動」という共通概念を持ちます。適切なパターンを選択することで、スケーラブルかつコスト効率の高いシステムを構築できます。

主要パターン

1
イベント駆動パターン

外部イベント(S3 アップロード・DB 変更・HTTP リクエスト)が発生したときにのみ関数を実行。アイドル時のコスト=0 で最もコスト効率が高い基本パターン。

2
ファンアウトパターン

1 つのイベントを複数の関数で並列処理するパターン。SNS トピックに複数の SQS キューを紐付け、それぞれの Lambda が独立して処理することでスループットを最大化。

3
パイプラインパターン

複数の処理ステップをシーケンシャルに実行するパターン。Step Functions(AWS)や Durable Functions(Azure)でステートフルなワークフローを管理し、各ステップをサーバーレス関数が担当。

4
スケジュールパターン

CRON 式や固定間隔でサーバーレス関数を定期実行するパターン。バッチ処理・レポート生成・データ同期・リソースクリーンアップ等の定期タスクに使用。

イベント駆動パターン

最も基本的なサーバーレスパターン。S3 へのファイルアップロードを契機に Lambda が自動起動し、ファイルを処理する典型的な構成です。

// 画像アップロード → リサイズ → 配信
ユーザー → S3 (画像アップロード: /uploads/)
→ S3 Event Notification → Lambda (リサイズ処理: PIL/Sharp)
→ S3 (サムネイル保存: /thumbnails/) → CloudFront で配信
S3 イベント
ファイルアップロード・削除・コピー
画像処理・PDF 変換・データ抽出
API Gateway
HTTP GET/POST/PUT/DELETE
REST API・Webhook ハンドラ
DynamoDB Stream
テーブルへの INSERT/UPDATE/DELETE
リアルタイム同期・通知・集計

ファンアウトパターン

1 つのイベントを複数のサブシステムが並列処理する分散パターンです。SNS(Pub/Sub)を中心に複数の SQS キューへ配信し、それぞれ独立した Lambda が処理します。

// 注文確定イベントのファンアウト
注文 API → SNS Topic (order.completed)
├── SQS → Lambda (在庫引き当て処理)
├── SQS → Lambda (メール送信: 注文確認)
├── SQS → Lambda (ポイント付与)
└── SQS → Lambda (分析データ記録)

各 SQS キューには DLQ(Dead Letter Queue)を設定し、処理失敗時のメッセージを保持・リトライします。SNS フィルターポリシーを使うと特定の Lambda にのみメッセージを配信できます。Azure では Service Bus トピック + サブスクリプション、GCP では Pub/Sub で同様のパターンを実装できます。

パイプラインパターン

複数のステップを順番に実行するワークフローパターンです。Lambda のチェーン実行ではなく、Step Functions(AWS)や Durable Functions(Azure)が状態管理を担い、各ステップが独立した Lambda として実行されます。

// ドキュメント処理パイプライン(Step Functions)
Step 1: Lambda (ファイル検証 + バリデーション)
↓ 成功
Step 2: Lambda (テキスト抽出 + 前処理)
↓ 成功
Step 3: Lambda (Bedrock API → AI 分析) [Retry: 3回, Backoff: 指数]
↓ 成功
Step 4: Lambda (結果保存 + 通知)
↓ 失敗 → DLQ + エラー通知
AWS Step Functions

ASL(Amazon States Language)でフローを JSON 定義。エラーハンドリング・並列実行・タイムアウト・待機(Wait)が組み込み機能として利用可能。

Azure Durable Functions

オーケストレーター関数がフローを管理し、アクティビティ関数が各ステップを実行。コードでワークフローを定義できる柔軟性が特徴。

パターン選択ガイド

ユースケース推奨パターン主要サービス
ファイルアップロード処理イベント駆動S3 → Lambda
REST API / Webhookイベント駆動API Gateway → Lambda
注文・イベント通知の並列処理ファンアウトSNS → SQS × N → Lambda
AI/ML 多段処理・文書生成パイプラインStep Functions → Lambda
日次バッチ・定期レポートスケジュールEventBridge Scheduler → Lambda
大量データの並列変換ファンアウト + パイプラインSQS → Lambda Map(Step Functions)

ArchitectAI でクラウドアーキテクチャ設計を自動化しましょう

無料で始める(10クレジット)