本文へスキップ
BecomeCoder

AWS SAP(ソリューションアーキテクト プロフェッショナル)コース · 第5章 新規ソリューションの設計①:コンピューティングと疎結合 · レッスン29

大規模なデプロイ戦略 ― Blue/Green・カナリア・ローリング

導入

新しいバージョンをどう本番に出すか。1台のサーバーを手作業で置き換えていた時代とは違い、SAPでは「ダウンタイムなし」「切り戻しが一瞬」「影響範囲を限定」といった要件を満たすデプロイ戦略そのものが設計対象になります。

説明

代表的な3つのデプロイ戦略を比較します。

戦略進め方切り戻しリスク
ローリング新バージョンに少しずつ台数を入れ替える途中で止めても新旧混在期間が残る新旧混在中の不整合に注意
Blue/Green新環境を丸ごと並行構築し、トラフィックを一気に切替ルーティングを戻すだけで即座に切り戻せる環境が2倍必要でコスト増
カナリアごく一部のトラフィックだけ新バージョンに流し、様子を見ながら比率を上げる早期に異常検知でき影響を最小化できる監視の仕組みが前提になる
flowchart LR
    B["Blue(現行環境)<br/>100%トラフィック"] -->|"検証OK後、一気に切替"| G["Green(新環境)<br/>100%トラフィック"]

これらの戦略は、AWS CodeDeployEC2/ECS/Lambdaへのデプロイ実行)とAWS CodePipeline(ビルド〜デプロイまでの一連の流れの自動化)で実装します。CodeDeployは設定1つでBlue/Greenやカナリア(トラフィックの何%をどのくらいの時間で切り替えるか)を選べます。

  • 「ダウンタイムなしで、かつ即座に切り戻せる」→ Blue/Green
  • 「新バージョンの影響を一部の利用者だけに限定して段階的に見極めたい」→ カナリア
  • 「環境を2つ持つコストをかけられない」→ ローリング

読んでみよう

「即座に切り戻せる」という要件文はBlue/Greenを、「段階的に安全確認しながら」という要件文はカナリアを強く示唆します。CodeDeployのデプロイ設定名(例: CodeDeployDefault.LambdaCanary10Percent5Minutes)まで覚える必要はありませんが、戦略名と要件キーワードの対応は即答できるようにしておきましょう。次章では、コンピューティングとメッセージングでつないだ先にある「データストア」の選び方に進みます。