無限ノック › SAP 練習問題一覧 › 問題
SAP既存のソリューションの継続的改善複数選択

大手 EC サイトがリアルタイムの顧客クリックストリームデータおよび注文イベントを処理するパイプラインを AWS 上で運用しています。現在のアーキテクチャは以下の通りです。 ・Amazon Kinesis Data Streams: 60 シャード(プロビジョニングモード)  — 平均シャード使用率: 22%(フラッシュセール時ピーク使用率: 85%、1日3時間のみ) ・AWS Lambda(Kinesis コンシューマー):  — バッチサイズ: 200、並列化係数(Parallelization Factor): 1  — Lambda 平均実行時間: 800ms、メモリ: 512MB  — コールドスタート発生率: 28%(平均 10,000 回/時間、ピーク 45,000 回/時間) ・Amazon DynamoDB(オンデマンドキャパシティ):  — レコメンデーション状態データを保持  — 同一プロダクト ID に対する GetItem 呼び出しの 55% が 2 分以内に重複発生 ・Amazon S3 + Amazon Athena: データサイエンスチームのアドホック分析用 月次コスト内訳: ・Kinesis Data Streams: $9,800 ・Lambda: $14,200 ・DynamoDB: $6,200 ・合計: 約 $30,200 目標: スループットの低下および p99(99 パーセンタイル)レイテンシ 2 秒超過なしに、月次コストを 35% 以上削減する(削減目標: 約 $10,570)。 コスト削減効果が最大で、かつ要件を満たす変更はどれですか?2 つ選択してください。

A
Kinesis Data Streams をプロビジョニングモードからオンデマンドモードに切り替える。これにより、非ピーク時間帯における未使用シャードキャパシティ(平均 78%)のコストが実際のスループットに比例したコストに変換され、ピーク時の 85% 使用率も自動スケールで処理される。
✓ 正解
Kinesis Data Streamsをオンデマンドモードに切り替えると実使用量比例課金となり、平均78%未使用の無駄なシャードコストを排除できる。
B
DynamoDB の前段に Amazon ElastiCache for Redis(クラスターモード無効、cache.r6g.large)をルックアサイドキャッシュとして追加し、TTL(Time to Live:データ有効期間)を 3 分に設定する。2 分以内の重複 GetItem 呼び出し 55% をキャッシュヒットに変換し、DynamoDB の読み取りキャパシティ消費を約 50〜55% 削減する。
✓ 正解
ElastiCache for Redis(TTL 3分)で重複GetItemの55%をキャッシュし、DynamoDB読み取りコストを約50%削減できる。
C
Lambda のバッチサイズを 200 から 10 に削減し、Kinesis Enhanced Fan-Out(強化ファンアウト:シャードごとに専用の読み取りスループットを確保する機能)コンシューマーに変換する。これにより各 Lambda 呼び出しの処理時間が短縮され、コールドスタートの影響が相対的に小さくなる。
Lambdaのバッチサイズを200から10に削減すると、同じデータ量を処理するためのLambda呼び出し回数が最大20倍に増加しコスト増となります。
D
Lambda ベースのアーキテクチャを、Amazon EC2 Auto Scaling グループ上で稼働するカスタム Java コンシューマーアプリケーション(1 年リザーブドインスタンス、全額前払い)に置き換え、毎秒 50,000 イベントを処理するよう構成する。
LambdaをEC2 Auto Scalingのカスタムアプリケーションに置き換えると、開発・テスト・運用の負荷が大幅に増大します。
E
Lambda のプロビジョニングされた同時実行数(Provisioned Concurrency)を 20 に設定してコールドスタートを排除し、バッチサイズを 200 から 1,000 に増加させ、バッチウィンドウを 30 秒に設定することで非ピーク時の Lambda 呼び出し回数を削減する。
プロビジョニングされた同時実行数(Provisioned Concurrency)はアイドル時も課金されるためLambdaコストが増加します。また30秒のバッチウィンドウを設定するとイベントが最大30秒待機してからバッチ処理されるため、p99(99パーセンタイル)レイテンシ要件である2秒以内を大幅に超過します。

解説

平均シャード使用率が22%(78%が未使用)のプロビジョニングモードをオンデマンドモードに切り替えることで、実際のスループットに比例したコストに変換されます。ピーク時の85%使用率も自動スケールで対応でき、$9,800のKinesisコストから大幅な削減が見込めます。 正解:B. DynamoDB の前段に Amazon ElastiCache for Redis(クラスターモード無効、cache.r6g.large)をルックアサイドキャッシュとして追加し、TTL(Time to Live:データ有効期間)を 3 分に設定する。2 分以内の重複 GetItem 呼び出し 55% をキャッシュヒットに変換し、DynamoDB の読み取りキャパシティ消費を約 50〜55% 削減する。 DynamoDBの前段にAmazon ElastiCache for RedisをTTL(Time to Live:データ有効期間)3分のルックアサイドキャッシュとして追加することで、2分以内に重複発生するGetItem呼び出しの55%をキャッシュヒットに変換し、DynamoDBの読み取りキャパシティ消費を約50〜55%削減できます。 選択肢C のLambdaのバッチサイズを200から10に削減すると、同じデータ量を処理するためのLambda呼び出し回数が最大20倍に増加しコスト増となります。 選択肢D のLambdaをEC2 Auto Scalingのカスタムアプリケーションに置き換えると、開発・テスト・運用の負荷が大幅に増大します。 選択肢E はプロビジョニングされた同時実行数(Provisioned Concurrency)はアイドル時も課金されるためLambdaコストが増加します。また30秒のバッチウィンドウを設定するとイベントが最大30秒待機してからバッチ処理されるため、p99(99パーセンタイル)レイテンシ要件である2秒以内を大幅に超過します。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSAPを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SAP の問題一覧に戻る