ゼロダウンタイムデプロイ

サービスを停止せずに新バージョンをデプロイする手法の総称

デプロイ可用性

ゼロダウンタイムデプロイとは

ゼロダウンタイムデプロイは、サービスを停止せずに新バージョンをデプロイする手法の総称である。ユーザーがダウンタイムを体験することなく、シームレスにアプリケーションが更新される。

デプロイ戦略の比較

戦略 ダウンタイム リスク ロールバック速度 コスト
再起動デプロイ あり 低い 遅い 低い
ローリングアップデート なし 中程度 中程度 低い
Blue/Green なし 低い 即座 高い (2 倍のリソース)
カナリアリリース なし 最低 即座 中程度

ローリングアップデート

Step 1: [v1] [v1] [v1]  ← 全て旧バージョン
Step 2: [v2] [v1] [v1]  ← 1 台ずつ更新
Step 3: [v2] [v2] [v1]
Step 4: [v2] [v2] [v2]  ← 全て新バージョン

ECS と Kubernetes のデフォルト戦略。maxSurgemaxUnavailable で更新速度を制御する。

Blue/Green デプロイ

Blue (現行):  [v1] [v1] [v1]  ← トラフィックを受けている
Green (新規): [v2] [v2] [v2]  ← テスト中

切り替え: ALB のターゲットグループを Green に変更
ロールバック: Blue に戻すだけ (即座)

カナリアリリース

Step 1: [v1] x 9, [v2] x 110% のトラフィックを v2 に
Step 2: メトリクスを監視 (エラー率、レイテンシ)
Step 3: 問題なければ段階的に v2 を増やす
Step 4: [v2] x 10  ← 全トラフィックを v2 に

Lambda でのゼロダウンタイム

Lambda はデプロイ時に自動的にゼロダウンタイムで更新される。新しいコードがアップロードされると、次のリクエストから新バージョンが使われる。

エイリアスと加重ルーティングでカナリアリリースも可能:

前提条件

前提 理由
後方互換な API 新旧バージョンが同時に動くため
DB マイグレーションの分離 デプロイとスキーマ変更を同時にしない
ヘルスチェック 新バージョンの正常性を確認
ロールバック手順 問題発生時に即座に戻せる

理論と実装の両面から学ぶなら関連書籍が参考になる。

関連用語