Q59 — AWS DOP-C02 第2章

第 59/100 問 | ← 第2章

あるDevOpsエンジニアは、Amazon EC2上で実行される大規模なWebアプリケーションを管理しています。このアプリケーションは、Amazon Kinesis Data Streamsを使用してネットワークログを収集・処理しています。DevOpsエンジニアは、同様にAmazon EC2上で実行されるKinesisコンシューマーアプリケーションも管理しています。 データの急増により、Kinesisコンシューマーアプリケーションが遅延し、処理可能な状態になる前にKinesisデータストリームがレコードを破棄しています。DevOpsエンジニアは、処理能力を向上させるソリューションを実装する必要があります。 どのソリューションが、これらの要件を最も高い運用効率で満たすことができますか?

正解: B. Amazon CloudWatchのGetRecords.IteratorAgeMillisecondsメトリクスに基づき、より多くのEC2インスタンスを追加してKinesisコンシューマーアプリケーションを水平スケーリングします。Kinesisデータストリームの保持期間を延長します。

解説

Amazon Kinesisデータストリームはシャード単位でスループットを管理しており、各シャードの処理能力は固定されています。コンシューマーアプリケーションの処理速度が不足すると、保持期間の制限によりデータが破棄される可能性があります。EC2インスタンスを追加することでコンシューマーの処理能力を水平スケーリングし、CloudWatchのGetRecords.IteratorAgeMillisecondsメトリクスに基づいてリアルタイムで遅延を監視することが可能です。このメトリクスは、レコードが未処理のまま経過した時間を示し、値が大きい場合にスケーリングをトリガーします。Kinesisデータストリームの保持期間(デフォルト24時間、最大7日間)を延長することで、バックログ処理に余裕を持たせることができます。選択肢Bは、遅延に対する動的スケーリングと保持期間の調整を組み合わせており、データ損失を防ぐという課題に直接対応しています。選択肢Dはシャード数の増加のみであり、コンシューマー側の処理速度不足を解決しません。選択肢CのLambda関数は実行時間および同時実行数の制限があり、高スループットシナリオには不向きです。AWS公式ガイドラインでは、CloudWatchによるコンシューマー遅延の監視とインスタンスのスケーリングが推奨されています(AWS Kinesis Developer Guide参照)。