Q21 — AWS SAA-C03 第5章

第 21/65 問 | ← 第5章

Q321. ある企業が、AWS上で新しい機械学習(ML)モデルソリューションを開発しています。これらのモデルは、起動時にAmazon S3から約1 GBのモデルデータを取得し、メモリに読み込む独立したマイクロサービスとして開発されています。ユーザーは非同期API経由でモデルにアクセスし、単一のリクエストまたはリクエストのバッチを送信して、結果の送信先を指定できます。同社は数百人のユーザーにモデルを提供しており、モデルの利用パターンは不規則です。一部のモデルは数日〜数週間使われない場合があり、一方で他のモデルは一度に数千件のリクエストのバッチを受信することもあります。これらの要件を満たすために、ソリューションアーキテクトが推奨すべき設計はどれですか?

正解: D. APIからのリクエストをAmazon Simple Queue Service(Amazon SQS)キューに送信します。モデルをAmazon Elastic Container Service(Amazon ECS)サービスとしてデプロイし、そのサービスがキューからメッセージを読み取るようにします。SQSキューのサイズに基づいて、Amazon ECSのクラスターおよびサービスのコピー両方に対してAWS Auto Scalingを有効化します。

解説

この設計では、Amazon ECSを用いてモデルをコンテナとしてデプロイし、起動時にAmazon S3からデータを取得してメモリに読み込むことができます。APIはリクエストをSQSキューに送信し、これによりAmazon ECSサービスがリクエストを処理するようトリガーされます。また、SQSキューのサイズに基づいて、Amazon ECSのクラスターおよびサービスの両方に対してAWS Auto Scalingを有効化することで、需要の変動に応じてリソースを自動的にスケールアップ/ダウンでき、着実にリクエストを処理できるようになります。選択肢A(NLB経由でLambda関数を呼び出す)は、1 GBという大量のモデルデータをロードする必要があるため、Lambda関数のメモリ制限を超える可能性があり、適していません。選択肢B(ALB+ECS+App Mesh)は、App Meshの導入により不要な複雑性とコストオーバーヘッドが生じる可能性があります。選択肢C(SQSイベントによるLambda関数の実行)は、基盤となるインフラストラクチャに対する制御が限定的であり、パフォーマンスやコスト最適化の観点で十分な柔軟性を提供できません。