Question#28(AZ-204)

Question#28(AZ-204)
容量(キャパシティ)の問題を解決する必要があります。 何をすべきですか?

正解:D

1. タイマートリガーの挙動による制限

この関数は、特定の時間間隔(例:5分ごと)で起動するタイマートリガーです。

  • スケーリングの限界: 従量課金プランであっても、タイマートリガーは通常「単一のインスタンス」で実行されます。つまり、プランを調整しても(BやC)、1つの処理単位(インスタンス)が持つ処理能力の枠内での戦いになります。

  • 逐次処理の限界: 現状のコード(PC09行目)が、取得したファイルリストを foreach などで1つずつ順番に処理している場合、ファイル数が増えれば増えるほど、5分という起動間隔内に処理が終わらなくなり、遅延が蓄積していきます。

2. 並列処理(Parallel)によるスループットの向上

PC09 行目のループを Parallel.ForEachTask.WhenAll を用いた並列処理に書き換えることで、以下のメリットが得られます。

  • CPUリソースの有効活用: 単一インスタンス内にあるマルチコアの能力をフルに引き出し、複数のファイルを同時にアップロード・処理できます。

  • I/O待ち時間の短縮: アップロード処理は「待ち時間(I/O待機)」が多いため、並列化することで劇的に全体の実行時間を短縮でき、混雑時の遅延を解消できます。

3. 「同一レシートの同時処理」との整合性

問題文にある「一貫性を保つため、単一のレシートの同時処理は避ける」という制約は、一見並列化を禁止しているように見えます。しかし、これは「同じファイル(レシートA)を2つのプロセスで同時に触るな」という意味であり、「レシートAとレシートBを並列に処理すること」を禁止しているわけではありません。

  • Dの解決策は、異なるファイル(アイテム)を並列に処理することを指しているため、この制約に違反せず、かつパフォーマンスを最大化できます。


コメント

コメント

コメントする

目次