変更要約: in-scope サービス網羅: App Runner, App2Container, AWS Copilot, Serverless Application Repository, CloudShell, AWS CLI/SDK, CodeStar を s3 に追記
1.2デプロイ戦略
リスクを抑えるデプロイ——CodeDeploy、インプレース/ブルーグリーン、ローリング/カナリア/線形(リニア)——を理解します。ダウンタイムと障害影響を最小化してリリースします。
デプロイはいかに安全に切り替えるかが肝心です。CodeDeploy は EC2/ECS/Lambda 向けに複数の戦略を提供します。
1.2.1デプロイ方式の選択
- インプレース:既存インスタンスを順次更新(ローリング)。追加コスト小だが切替中は混在。
- ブルーグリーン:新環境を並行構築し一斉に切替。問題時は即ロールバック(ダウンタイム最小)。
- カナリア:最初に少量のトラフィックを新版へ→問題なければ残りを切替。
- 線形(リニア):一定割合ずつ段階的に移行。オールアットワンスは一括。
「並行環境で一斉切替+即ロールバック=ブルーグリーン」「少量から検証=カナリア」「一定割合ずつ=線形」「既存を順次更新=インプレース/ローリング」、そして CloudWatch アラームで自動ロールバック は DOP-C02 で頻出です。ダウンタイムやリスクを最小化したいならブルーグリーンやカナリアを選びます。
CodeDeploy は CloudWatch アラームと連携し、デプロイ中に閾値を超えると自動でロールバックできます。Lambda/ECS では事前/事後フック(hooks)でスモークテストを挟めます。
DOP-C02 ではデプロイ先(EC2/オンプレ・ECS・Lambda)ごとに使える戦略と、その安全装置が問われます。EC2/オンプレでは AppSpec(appspec.yml)に hooks(BeforeInstall/AfterInstall/ApplicationStart/ValidateService など)を定義し、各フックでスクリプトを実行します。ブルーグリーンは新しい Auto Scaling グループや ECS タスクセットを並行起動し、ロードバランサー(ALB/NLB)のターゲットグループを切り替えて移行、旧環境を一定時間残してから終了するため即時ロールバックが容易です。Lambda/ECS では Canary10Percent5Minutes(10% を 5 分流して残りを切替)や Linear10PercentEvery1Minute のような事前定義のトラフィックシフト構成を選べ、BeforeAllowTraffic/AfterAllowTraffic フックの Lambda 検証関数でスモークテストを実行できます。ロールバックの自動化は CloudWatch アラーム連携が中心で、デプロイ中にアラームが ALARM になると自動で旧バージョンへ戻します。Lambda 単体では エイリアスの加重ルーティングでも段階移行を実現できます。これらはダウンタイムと影響範囲(ブラストradius)を抑えるための選択肢です。
| 戦略 | 切替の仕方 | 向くケース |
|---|---|---|
| インプレース/ローリング | 既存を順次更新 | 追加コストを抑えたい・短時間の混在許容 |
| ブルーグリーン | 並行環境へ一斉切替 | ダウンタイム最小・即ロールバック必須 |
| カナリア | 少量→残りを一括 | 本番で素早く検証したい |
| 線形(リニア) | 一定割合ずつ段階的 | 徐々に様子を見ながら移行 |
シナリオ:Lambda 関数の新版を、いきなり全量に出さず安全に出したい。エラー率が上がったら自動で戻したい。→ CodeDeploy の Canary10Percent5Minutes を選び、BeforeAllowTraffic で軽い検証を実行。本番メトリクス(エラー率/レイテンシ)に CloudWatch アラームを設定し、デプロイ中に ALARM になれば自動ロールバック。これでブラストradius を 10% に抑えつつ、問題があれば数分で旧版へ戻せます。
FAQ:ブルーグリーンとカナリアはどう使い分ける? 「一気に新環境へ切り替え、問題なら丸ごと戻したい」ならブルーグリーン(並行環境のコストはかかる)。「本番トラフィックの一部で先に検証してから広げたい」ならカナリア/線形(同一環境内でトラフィック割合を変える)。要件がダウンタイム最小か段階検証かで選びます。
ひっかけ:「自動ロールバックを設定した」と言っても、CloudWatch アラームを紐づけていないと発火しません。ロールバックのトリガはアラームやデプロイ失敗イベントです。また EC2 のブルーグリーンには新環境ぶんの一時的な追加リソース(コスト)が必要——「コスト最小」要件ではインプレース/ローリングが選ばれることがあります。
1.2.2この節のまとめ
- 低リスク切替=ブルーグリーン/カナリア/線形
- CodeDeploy=EC2/ECS/Lambda+CloudWatch アラームで自動ロールバック
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. 新環境を並行構築して一斉に切り替え、問題があれば即座に旧環境へ戻したい。どのデプロイ戦略ですか?
Q2. まず 10% のトラフィックを新バージョンに流して様子を見て、問題なければ残りを切り替えたい。どの方式ですか?
Q3. デプロイ中にエラー率が閾値を超えたら自動でロールバックさせたい。CodeDeploy は何と連携しますか?

