導入
既存システムの改善で最も事故が起きやすいのが「変更のデプロイ」です。手動デプロイは属人化し、ミスも起きやすくなります。安全にリリースし、問題が起きたらすぐ戻せる仕組みを整えることが、信頼性向上の要になります。
説明
デプロイパイプラインの中心が AWS CodePipeline です。ソースの変更を検知し、ビルド・テスト・デプロイの各ステージを自動でつないでいきます。
flowchart LR
S["Source<br/>(CodeCommit/GitHub)"] --> B["Build<br/>(CodeBuild)"]
B --> T["Test"]
T --> D["Deploy<br/>(CodeDeploy等)"]
D -->|"異常検知"| RB["自動ロールバック"]
デプロイの安全性を高める鍵は、一気に全台へ反映しないことです。代表的な段階的リリース戦略を整理します。
| 戦略 | 概要 | 用途 |
|---|---|---|
| ローリングデプロイ | 一部ずつ順番に新バージョンへ入れ替え | 標準的な更新、ダウンタイム最小化 |
| Blue/Greenデプロイ | 新環境(Green)を丸ごと作り、切り替えて即戻せる | リスクの高い変更、即時ロールバックが必要 |
| カナリアリリース | ごく一部のトラフィックだけ新バージョンへ流し様子見 | 影響範囲を最小化して検証したい変更 |
- 自動ロールバック: CloudWatch Alarmと連携させ、デプロイ後にエラー率やレイテンシーが悪化したら自動で旧バージョンへ戻す。CodeDeployはこの仕組みを標準機能として持つ。
- Blue/Green: Route 53やELBのターゲットグループ切り替えで実現。切り戻しが「トラフィックを向け直すだけ」で完了するため、RTOが極めて短い。
読んでみよう
「デプロイの失敗を自動で検知し、即座に前のバージョンへ戻したい」は自動ロールバック、「新機能を一部ユーザーだけに先行公開してリスクを抑えたい」はカナリアリリース、「即座に旧環境へ切り戻せる状態を保ちたい」はBlue/Greenがそれぞれの定番解です。「手動でのデプロイ判断・切り戻しをなくしたい」という要件は、この自動化全般を指しています。