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

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

デプロイ可用性

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

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

デプロイ戦略の比較

デプロイ戦略の比較を以下に示す。

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

ローリングアップデート

ローリングアップデートを図で示す。

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

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

Blue/Green デプロイ

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 マイグレーションの分離デプロイとスキーマ変更を同時にしない
ヘルスチェック新バージョンの正常性を確認
ロールバック手順問題発生時に即座に戻せる

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

この記事は役に立ちましたか?

関連用語

関連する記事