ステージ・デプロイ・カナリアリリース難易度 標準無料
本番稼働中のREST API(prodステージ)に新しいLambda統合ロジックをデプロイしたい。全トラフィックを一斉切替する前に、本番トラフィックの5%だけを新バージョンへ流し、CloudWatchメトリクスで問題が無いことを確認してから段階的に100%へ引き上げたい。この要件を実現する最も適切な方法を選べ。(単一選択)
- A
prodステージでカナリアリリース設定を有効化し、カナリアトラフィックパーセンテージを5%に設定して新しいデプロイをカナリアへ適用する。問題なければ段階的に引き上げ最終的にベースラインへ昇格する - B新しいステージ
prod-v2を作成し、クライアント側のアプリケーションコードで5%の確率でエンドポイントをprod-v2に切り替えるロジックを実装する - CLambda関数のエイリアスの重み付けルーティングだけを使い、API Gateway側の設定は変更しない
- DRoute 53の加重ルーティングポリシーで2つの異なるカスタムドメイン名(
api.example.comとapi-v2.example.com)へ5%:95%でトラフィックを振り分ける
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
API Gatewayのカナリアリリース(canary release deployment)機能を使うことで、 同一ステージ内で新しいデプロイ(カナリア)と既存の本番デプロイ(ベースライン)にトラフィックを指定した比率で振り分けることができる。
prodステージでカナリア設定を有効化し、カナリアトラフィックパーセンテージを5%に設定して新しいデプロイをカナリアへ適用する。- 残り95%のトラフィックは既存のベースラインデプロイのまま処理される。カナリア用のCloudWatchメトリクス(
Latency・5XXError等)は ベースラインと分離して監視できるため、新ロジックの影響を切り分けて評価できる。 - 問題がなければカナリアパーセンテージを段階的に引き上げ、最終的にベースラインへ昇格(promote)させて全トラフィックを新バージョンにする。 問題があればカナリア設定を削除するだけで即座にロールバックできる。
ステージ変数と組み合わせれば、カナリア側だけ異なるLambdaエイリアス/バージョンを参照させることも可能である。
- Bクライアント側実装への依存は運用が煩雑でロールバックも遅い。API Gatewayのカナリア機能はサーバー側で一元管理でき、メトリクスも自動分離される。
- CLambdaエイリアスの重み付けだけでは実現できるが、API Gateway側のカナリア機能ならメトリクスの分離やステージ変数のオーバーライドなど統合的な管理が可能。カナリアリリース機能を使わない設計は本設問が意図する解ではない。
- DDNSレベルの加重ルーティングはTTLやクライアント側キャッシュの影響で正確な比率にならず、また2つの別APIを維持する運用コストも増える。API Gatewayネイティブのカナリア機能の方が適切。
ひっかけ: 「新しいステージ(例:
prod-canary)を別途作成してRoute 53の重み付けルーティングで振り分ける」という発想は実現不可能ではないが、
API Gatewayが同一ステージ内でネイティブにサポートするカナリアリリース機能を使う方がシンプルかつメトリクス分離・ロールバックが容易であり、本問の意図する正解である。AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)