模擬問題集DVA-C02練習問題 4

DVA-C02 練習問題 4

AWS Developer – Associate・トラブルシューティングと最適化・無料公開(全 200 問中 15 問を無料公開中)

問題
あるアプリケーションが Amazon Kinesis を使用してクリックストリームデータを処理しています。Kinesis へ流れ込むクリックストリームデータのフィードには周期的なスパイク(急増)が発生します。PutRecords API 呼び出しが時折失敗し、ログを見ると失敗した呼び出しが以下のレスポンスを返していることが分かりました。 【PutRecords API のレスポンス(文字起こし)】 { "FailedRecordCount": 1, "Records": [ { "SequenceNumber": "21269319989900637946712965403778482371", "ShardId": "shardId-000000000001" }, { "ErrorCode": "ProvisionedThroughputExceededException", "ErrorMessage": "Rate exceeded for shard shardId-000000000001 in stream exampleStreamName under account 123456789." }, { "SequenceNumber": "21269319989999637946712965403778482985", "ShardId": "shardId-000000000002" } ] } この例外を緩和するのに役立つ手法はどれですか?(2つ選択してください。)

選択肢と解説

  • 指数バックオフ付きのリトライを実装する。
  • 2
    PutRecords API の代わりに PutRecord API を使用する。
  • リクエストの頻度やサイズ、あるいはその両方を削減する。
  • 4
    Kinesis の代わりに Amazon SNS を使用する。
  • 5
    KCL コンシューマーの数を削減する。

解説

【正解】A、C

【0からの解説】
レスポンス中の ErrorCode が ProvisionedThroughputExceededException で「Rate exceeded for shard ...(シャードのレート超過)」と出ています。これは、特定シャードの書き込みスループット上限(1 シャードあたり 1,000 レコード/秒、または 1 MB/秒)を超えたことを意味します。
対処の定石は 2 つです。1 つ目は「指数バックオフ付きリトライ (A)」。一時的なスロットリングに対し、待ち時間を指数的に伸ばしながら失敗したレコードだけ再送することで、輻輳を悪化させずに成功率を高めます。PutRecords は部分的失敗を返すため、FailedRecordCount と各レコードの ErrorCode を見て失敗分のみ再送するのが正しい実装です。2 つ目は「リクエストの頻度・サイズの削減 (C)」。送信ペースやバッチサイズを抑えることで、シャードのレート上限超過そのものを回避します(あわせてシャード分割やパーティションキー分散も有効)。

【誤りの選択肢】
B:PutRecord(単一レコード)に変えてもシャードあたりのスループット上限は同じであり、むしろ 1 回あたりの効率が落ちるため、スロットリングの根本対策になりません。
D:Amazon SNS はパブリッシュ/サブスクライブ型メッセージングで、Kinesis のようなシャード単位のストリーム処理・順序保証・再処理とは用途が異なり、スロットリングの解決策として的外れです。
E:KCL コンシューマーは「読み取り側」です。今回のエラーは「書き込み (PutRecords)」のスループット超過なので、コンシューマー数を減らしても書き込みスロットリングは緩和されません。

【参考】
Kinesis Data Streams の制限とエラー再試行
API リクエストのエラー再試行と指数バックオフ
← 練習問題 3練習問題 5
DVA-C02 の模擬問題集は全 200

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

DVA-C02 の模試を受ける料金プランを見る

DVA-C02 の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15