Instiq
第1章 · SDLC の自動化·v2.1.0·更新 2026/6/28·読了目安 約11分

変更要約: 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デプロイ方式の選択

CodeDeploy のデプロイ戦略を対比した図。インプレース(既存インスタンス上で順次更新・ローリング)、ブルーグリーン(新環境=グリーンを並行構築し、ロードバランサーで一斉に切替・問題時は即ロールバック)を上段に示し、Lambda/ECS のトラフィックシフトとしてカナリア(最初に少量→残りを一括)、線形(一定割合ずつ段階的)、オールアットワンス(一括)を下段に並べ、CloudWatch アラームで異常検知時に自動ロールバックする様子を添えた図。
デプロイ戦略の対比
  • インプレース:既存インスタンスを順次更新(ローリング)。追加コスト小だが切替中は混在。
  • ブルーグリーン:新環境を並行構築し一斉に切替。問題時は即ロールバック(ダウンタイム最小)。
  • カナリア最初に少量のトラフィックを新版へ→問題なければ残りを切替。
  • 線形(リニア)一定割合ずつ段階的に移行。オールアットワンスは一括。
試験ポイント

「並行環境で一斉切替+即ロールバック=ブルーグリーン」「少量から検証=カナリア」「一定割合ずつ=線形」「既存を順次更新=インプレース/ローリング」、そして 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 は何と連携しますか?

理解度を確認第1章「SDLC の自動化」の問題を解く