DVA-C02トラブルシューティングと最適化HARD複数選択

あるチームがLambda関数のコールドスタート時間を最小化したい。関数はJavaで実装されており、Spring Frameworkを使っているため、コールドスタートに8秒かかっている。本番環境でのコールドスタート改善策として有効なものを2つ選択してください。

  1. A. Lambda関数のメモリを128MBから3,008MBに増やすことでコールドスタートの問題を完全に解消できる
  2. B. Lambda SnapStartを有効にして、初期化済みのスナップショットから関数を起動することでコールドスタート時間を大幅削減する
  3. C. Lambda関数をJavaからPythonに書き直すことが唯一の根本解決策である
  4. D. Spring FrameworkをSpring Native(GraalVMネイティブイメージ)に移行して、AOTコンパイルによりJVM起動と遅延クラスロードを排除する
  5. E. ARM64アーキテクチャ(Graviton2)に切り替えるとJavaのコールドスタートが自動的に半減する
解答と解説を見る

正解: B, D

JavaのSpring Frameworkによるコールドスタート対策として有効な方法は2つある。Lambda SnapStart(選択肢B)はJava 11以降のCorrettoランタイムで利用可能な機能で、関数のInit(初期化)フェーズのスナップショットを事前に作成し、新しい実行環境ではそのスナップショットからメモリを復元して起動するため、コールドスタートを数ミリ秒レベルまで削減できる。Spring GraalVM Native Image(選択肢D)はSpring ApplicationContextの構築をビルド時に行うAOT(事前コンパイル)により、実行時のリフレクションや遅延クラスロードをなくし、JVM起動が不要になるためコールドスタートが大幅改善される。選択肢Aのメモリ増加はCPU割り当てが増えてJVM起動が高速化されるが、Spring Frameworkの重い初期化が根本原因であり「完全解消」にはならない。選択肢CのPython書き直しは有効だが「唯一の解決策」ではなく、BとDという優れた代替がある。選択肢EのARM64切り替えはコストパフォーマンス向上には有効だが、Javaコールドスタートを「自動的に半減」させる効果は誇大であり、主な改善要因ではない。

▸ この試験を本気で演習する(全150問・無料)