Q29 — AWS SAA-C03 第17章
第 29/89 問 | ← 第17章
Q1329. ある企業がニュース集約プラットフォームを構築しています。このプラットフォームはニュース記事を受信し、クリーニングおよびカテゴリ分けを行う必要があります。処理済みの記事は、1年間耐久的に保存する必要があります。また、ピーク時には1分間に数千件の記事を受信できるようにする必要があります。さらに、各記事に対して独立した、スケーラブルな処理を提供する必要があります。これらの要件を満たすソリューションはどれですか?
- A. ニュース記事の受信とインメモリ処理を行うカスタムアプリケーションを作成します。このアプリケーションを1台の大型Amazon EC2インスタンスで実行します。アプリケーションが処理済みの記事をAmazon S3バケットに保存するように設定します。
- B. ニュース記事を受信するAWS Lambda関数を作成します。各記事ごとに1件のメッセージをAmazon Simple Queue Service(Amazon SQS)キューに送信します。SQSキューからメッセージを消費する第2のLambda関数を作成します。この第2のLambda関数が記事を処理し、処理済みの記事をAmazon S3バケットに保存するように設定します。 ✓
- C. ニュース記事を受信するAWS Lambda関数を作成します。出力を共有のAmazon ElastiCache(Memcached)クラスターに保存します。Auto Scalingグループ内のAmazon EC2インスタンスのフェleetをデプロイします。EC2インスタンスがElastiCacheクラスターから記事データを取得し、処理して、再度ElastiCacheクラスターに書き戻すように設定します。
- D. ニュース記事を受信するAWS Lambda関数を作成します。各記事ごとに1件のメッセージをAmazon Simple Queue Service(Amazon SQS)キューに送信します。SQSキューからメッセージを消費する第2のLambda関数を作成します。この第2のLambda関数が記事を処理し、処理済みの記事を第2のSQSキューに保存するように設定します。
正解: B. ニュース記事を受信するAWS Lambda関数を作成します。各記事ごとに1件のメッセージをAmazon Simple Queue Service(Amazon SQS)キューに送信します。SQSキューからメッセージを消費する第2のLambda関数を作成します。この第2のLambda関数が記事を処理し、処理済みの記事をAmazon S3バケットに保存するように設定します。
解説
数千件/分のニュース記事を処理可能であること、各記事を独立かつスケーラブルに処理できること、そして処理済み記事を1年間耐久的に保存できること——これらの要件を満たす最適なソリューションは以下の通りです。 正解:B.ニュース記事を受信するAWS Lambda関数を作成します。各記事ごとに1件のメッセージをAmazon Simple Queue Service(Amazon SQS)キューに送信します。SQSキューからメッセージを消費する第2のLambda関数を作成します。この第2のLambda関数が記事を処理し、処理済みの記事をAmazon S3バケットに保存するように設定します。 ■ このソリューションが最適な理由 1.スケーラビリティと独立した処理 ・AWS Lambdaは、数千件の同時実行を自動的にスケール可能であり、高スループットな受信処理に最適です。 ・SQS(Simple Queue Service)は、受信層と処理層を疎結合化し、各記事を独立して処理できるようにします。 ・SQSは完全マネージドで、高いスケーラビリティと「最低1回」の配信保証により、メッセージの喪失を防ぎます。 2.処理済み記事の耐久的ストレージ ・Amazon S3は、長期保存(1年間)に最もコスト効率が良く、耐久性の高いストレージソリューションです。 ・S3は99.999999999%(11個の9)という極めて高い耐久性と、膨大な規模へのスケーラビリティを提供し、処理済み記事の保存に最適です。 3.イベント駆動型アーキテクチャ ・Lambdaによる受信 → SQSキュー → Lambdaによる処理 → S3への保存というフローは、完全サーバーレス・イベント駆動型のワークフローです。 ・EC2やElastiCacheなどのサーバー管理が不要であり、運用オーバーヘッドを最小限に抑えられます。 ■ 他の選択肢が不適切な理由 A.単一の大型EC2インスタンスによるインメモリ処理 ・単一EC2インスタンスは単一障害点であり、各記事に対する独立したスケーリングが不可能です。 ・インメモリ処理(RAM)は耐久性がなく、インスタンス障害時に処理済み記事が失われます。 ・ピーク負荷に対応するために過剰な容量を常時確保する必要があり、コスト効率が悪いです。 C.Lambda受信 → ElastiCache → EC2 Auto Scalingグループ ・ElastiCache(Memcached)はインメモリキャッシュであり、耐久的なストレージではありません。 ・EC2インスタンスの管理が必要となり、複雑さとコストが増加します。 ・EC2による処理はLambdaほど即座にスケールせず、スケーラビリティに劣ります。 ・ElastiCacheへの再書き込みは不要であり、S3への保存が耐久性要件を満たす唯一の方法です。 D.Lambda受信 → SQS → Lambda → 第2のSQSキュー ・処理済み記事を第2のSQSキューに保存するのは誤りです。 → SQSは一時的なメッセージキューであり、1年間の長期保存には不適切です。 ・耐久性のある保存が実現できず、不要な複雑さを導入しているだけです。 ■ 推奨されるアーキテクチャ ・受信層:API Gatewayや直接呼び出し経由でAWS Lambdaが記事を受信。各記事をSQS FIFOまたはStandardキュー(順序性が必要な場合はFIFO)に個別メッセージとして送信。 ・処理層:SQSメッセージをトリガーとして起動される第2のLambda関数。各実行が1つの記事を独立して処理し、スケーラビリティを確保。 ・保存層:処理済み記事をAmazon S3に保存し、耐久的かつ長期的な保存を実現。 ■ 結論 最もスケーラブルでコスト効率が良く、耐久性も確保されたソリューションは、 B.ニュース記事を受信するAWS Lambda関数を作成します。各記事ごとに1件のメッセージをAmazon Simple Queue Service(Amazon SQS)キューに送信します。SQSキューからメッセージを消費する第2のLambda関数を作成します。この第2のLambda関数が記事を処理し、処理済みの記事をAmazon S3バケットに保存するように設定します。 他の選択肢は、スケーラビリティ不足(A)、不要な複雑さ(C)、あるいは耐久的保存の欠如(D)という明確な課題を抱えています。