サーバーレス中級CLF-C02SAA-C03
SQS + Lambda 非同期処理構成
Amazon SQSで処理依頼をキューイングし、AWS Lambdaで順番に処理する非同期サーバーレス構成です。
#SQS#Lambda#非同期処理#DLQ#疎結合
構成図
使用AWSサービス
サービス名をクリックすると、用語詳細ページへ移動します。
概要
SQS + Lambdaは、重い処理や失敗しやすい処理を非同期化するための代表的な構成です。APIやアプリケーションはSQSへメッセージを送るだけにし、Lambdaがキューからメッセージを受け取って処理します。 ユーザーへの応答とバックエンド処理を分離できるため、疎結合でスケールしやすい設計になります。
通信フロー
1. ユーザーまたは外部システムがAPIへリクエストします。 2. APIまたはアプリケーションがSQSへメッセージを送信します。 3. SQSが処理待ちメッセージを保持します。 4. LambdaがSQSイベントで起動します。 5. Lambdaが処理結果をDynamoDBなどへ保存します。 6. 規定回数失敗したメッセージはDLQへ退避します。
設計ポイント
Lambda処理は重複実行される可能性があるため、冪等性を前提にします。同じメッセージを複数回処理してもデータが壊れない設計にします。 可視性タイムアウトはLambdaの最大処理時間より長く設定します。処理失敗を調査できるようにDLQを設定します。 Lambdaの同時実行数を制御すれば、DynamoDBや外部APIへ負荷をかけすぎない設計にできます。
SAA試験ポイント
急なリクエスト増加を吸収したい、コンポーネントを疎結合にしたい、処理を非同期化したい、という条件ではSQSが候補になります。 失敗メッセージの退避にはDLQ、順序保証が必要な場合はFIFOキューを検討します。
他のAWS構成図も確認する
SAA対策では、AWSサービスを単体ではなく構成パターンとして理解することが重要です。