導入
新しいバージョンをどう本番に出すか。1台のサーバーを手作業で置き換えていた時代とは違い、SAPでは「ダウンタイムなし」「切り戻しが一瞬」「影響範囲を限定」といった要件を満たすデプロイ戦略そのものが設計対象になります。
説明
代表的な3つのデプロイ戦略を比較します。
| 戦略 | 進め方 | 切り戻し | リスク |
|---|---|---|---|
| ローリング | 新バージョンに少しずつ台数を入れ替える | 途中で止めても新旧混在期間が残る | 新旧混在中の不整合に注意 |
| Blue/Green | 新環境を丸ごと並行構築し、トラフィックを一気に切替 | ルーティングを戻すだけで即座に切り戻せる | 環境が2倍必要でコスト増 |
| カナリア | ごく一部のトラフィックだけ新バージョンに流し、様子を見ながら比率を上げる | 早期に異常検知でき影響を最小化できる | 監視の仕組みが前提になる |
flowchart LR
B["Blue(現行環境)<br/>100%トラフィック"] -->|"検証OK後、一気に切替"| G["Green(新環境)<br/>100%トラフィック"]
これらの戦略は、AWS CodeDeploy(EC2/ECS/Lambdaへのデプロイ実行)とAWS CodePipeline(ビルド〜デプロイまでの一連の流れの自動化)で実装します。CodeDeployは設定1つでBlue/Greenやカナリア(トラフィックの何%をどのくらいの時間で切り替えるか)を選べます。
- 「ダウンタイムなしで、かつ即座に切り戻せる」→ Blue/Green
- 「新バージョンの影響を一部の利用者だけに限定して段階的に見極めたい」→ カナリア
- 「環境を2つ持つコストをかけられない」→ ローリング
読んでみよう
「即座に切り戻せる」という要件文はBlue/Greenを、「段階的に安全確認しながら」という要件文はカナリアを強く示唆します。CodeDeployのデプロイ設定名(例: CodeDeployDefault.LambdaCanary10Percent5Minutes)まで覚える必要はありませんが、戦略名と要件キーワードの対応は即答できるようにしておきましょう。次章では、コンピューティングとメッセージングでつないだ先にある「データストア」の選び方に進みます。