SAA-C03高パフォーマンスなアーキテクチャの設計HARD単一選択

ある企業が、AWS Lambda 関数と Amazon RDS for PostgreSQL を使ったサーバーレスアプリケーションを運用している。Lambda 関数のコールドスタート時(コンテナが新規作成されるとき)のレイテンシーを削減したい。特に、コールドスタート時のデータベース接続確立にかかる時間を短縮したい。最も適切な方法はどれか。

  1. A. RDS データベースのインスタンスタイプをアップグレードして接続確立を高速化する。
  2. B. Lambda のプロビジョニング済み同時実行(Provisioned Concurrency)を有効化して関数コンテナを事前に初期化し、データベース接続をハンドラー外(初期化コード)で確立してコンテナ間で再利用する。
  3. C. Lambda 関数に予約済み同時実行(Reserved Concurrency)を設定して常に一定数の実行環境を維持する。
  4. D. Lambda 関数のメモリ割り当てを最大(10,240MB)に設定して初期化を高速化する。
解答と解説を見る

正解: B

Lambda のプロビジョニング済み同時実行(Provisioned Concurrency)は、指定した数の関数コンテナを常に初期化済み状態で維持する。コールドスタートが発生しないため、リクエスト時には即座に実行できる。さらに、データベース接続をハンドラー関数の外(モジュールトップレベルの初期化コード)で確立することで、コンテナが再利用された際に接続を使い回せる。この 2 つの組み合わせでコールドスタート時のレイテンシーを最小化できる。選択肢Cの予約済み同時実行は最大同時実行数を制限する機能であり、コールドスタートの発生を防ぐものではない。トラフィックが増加して新しいコンテナが必要になればコールドスタートは発生する。選択肢AのRDS インスタンスアップグレードはデータベース側の接続処理速度の向上には寄与するが、Lambda 側のコンテナ初期化(コールドスタート)の問題は解決しない。選択肢DのLambda メモリ増加は CPU 比例で増加するため初期化が若干速くなることがあるが、プロビジョニング済み同時実行ほど確実にコールドスタートをなくす効果はない。コストも大幅に増加する。

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