ある金融機関が、DynamoDB Streamsを使ったイベント駆動型の監査ログシステムを構築している。ストリームのLambdaコンシューマーが処理遅延を起こしており、IteratorAgeが増大している。根本原因を特定して対策を講じる方法を2つ選択してください。
- A. Lambdaのメモリサイズを増やしてCPUパフォーマンスを向上させ、1レコードの処理時間を短縮する
- B. Kinesis Data StreamsとKinesis拡張ファンアウトに移行し、コンシューマーごとに専用スループットを確保する
- C. DynamoDBテーブルのプロビジョンドキャパシティ(RCU)を増やして読み取りスループットを向上させる
- D. DynamoDB StreamsのシャードをKinesis Data Streamsにも連携し、Kinesis Analytics Studioでリアルタイム分析する
- E. Lambda関数のparallelizationFactorを1から10に増やして、シャードあたりの並列処理数を向上させる
解答と解説を見る
正解: A, E
DynamoDB StreamsのIteratorAge増大はLambdaがレコードを処理しきれていないことを示す。parallelizationFactor(1〜10)を増やすとシャードあたりのLambda同時実行数が増加し、バッチ処理のスループットが向上する。追加コードなしに設定変更のみで効果がある。またLambdaのメモリを増やすとCPU割り当ても比例して増加するため(Lambdaはメモリ比例でCPUが割り当てられる)、各レコードの処理時間を短縮できる。両者を組み合わせることで処理遅延が改善される。CのDynamoDBのRCU増加は書き込みスループット(WCU)に対してであり、Streamsのコンシューマー処理遅延はLambda側の処理能力の問題でありRCUとは無関係。Bのkinesis拡張ファンアウトへの移行はアーキテクチャ変更が大きく、DynamoDB Streamsとは別サービスへの移行となるため「最小限の変更」に反する。DのKinesis Analytics Studioへの連携は監査ログ処理の遅延解消ではなく分析用途であり、IteratorAge問題の解決にはならない。
📚 関連サービスの解説: AWS Lambda