デプロイメント戦略比較

英語名 Deployment Strategy
読み方 デプロイメント ストラテジー
難易度
所要時間 30分〜1時間
提唱者 DevOps / SRE
目次

ひとことで言うと
#

ローリング・カナリア・ブルーグリーンなど複数のデプロイ方式の特徴を比較し、サービスの要件に合った戦略を選ぶためのフレームワーク。「どうやってリリースするか」もアーキテクチャの一部。

押さえておきたい用語
#

押さえておきたい用語
Rolling Deployment(ローリングデプロイ)
インスタンスを少しずつ新バージョンに置き換えていく方式。ダウンタイムゼロで段階的に展開できる。
Canary Deployment(カナリアデプロイ)
全体の一部(1〜5%)にだけ新バージョンを配信し、問題がなければ徐々に拡大する段階的リリース方式を指す。
Blue-Green Deployment
同一構成の環境を2面用意し、トラフィックを一気に切り替える方式。瞬時のロールバックが可能になる。
Recreate Deployment
旧バージョンをすべて停止してから新バージョンを起動する方式。最もシンプルだがダウンタイムが発生する
A/B Testing Deployment
ユーザー属性に基づいて異なるバージョンを配信し、ビジネスメトリクスで比較評価する手法を指す。

デプロイメント戦略の全体像
#

デプロイメント戦略:4つの方式の比較
Rolling Deployment段階的に置き換えダウンタイム: なしロールバック: やや遅いリソース: 追加不要新旧が混在する時間ありK8sのデフォルト戦略多くのケースで最適解Canary Deployment少量トラフィックで検証ダウンタイム: なしロールバック: 高速(トラフィック戻すだけ)リソース: 少量追加メトリクス監視が必須リスクの高いリリースに最適問題の影響範囲を最小化Blue-Green Deployment2面環境を瞬時に切替ダウンタイム: なしロールバック: 最速(秒単位)リソース: 2倍必要DB共有時のスキーマ互換に注意ロールバック速度が最重要な場合決済・金融系に向くRecreate Deployment全停止→全起動ダウンタイム: ありロールバック: 再デプロイ(遅い)リソース: 追加不要バージョン混在の心配なし内部ツール・計画メンテに限定最もシンプルで確実
デプロイメント戦略選定の進め方フロー
1
要件の整理
ダウンタイム許容度・ロールバック要件・リソース制約を確認
2
戦略の選定
要件に基づき最適なデプロイ方式を選ぶ
3
パイプライン実装
CI/CDパイプラインに選定した方式を組み込む
監視・改善
デプロイ成功率とMTTRをモニタリングし継続改善

こんな悩みに効く
#

  • どのデプロイ方式を選べばいいかわからない
  • ダウンタイムなしのデプロイを実現したい
  • リリース時のリスクを定量的に下げたい

基本の使い方
#

サービスの要件を整理する

以下の3軸で自分のサービスの要件を明確にする。

  • ダウンタイム許容度: ゼロ必須か、メンテナンスウィンドウがあるか
  • ロールバック速度: 秒単位で戻したいか、数分で許容か
  • リソース制約: 環境を2倍にするコストをかけられるか
要件に合った戦略を選ぶ
要件推奨戦略
ダウンタイムゼロ + コスト低Rolling
ダウンタイムゼロ + リスク最小化Canary
瞬時のロールバックが必須Blue-Green
ダウンタイム許容 + シンプルさ重視Recreate
パイプラインと監視を整備する
選んだ戦略をCI/CDパイプラインに実装し、デプロイ後のメトリクス監視を設定する。Canaryの場合はトラフィック比率の制御と自動ロールバック条件も定義する。

具体例
#

例1:スタートアップがRolling Deploymentで高速リリースを実現する

従業員15名のSaaSスタートアップ。Kubernetesを採用しており、デプロイ方式はデフォルトのRolling Deploymentを使用。

maxSurge=1、maxUnavailable=0に設定し、常に最低限の稼働Podを維持しながら段階的に更新。

指標
デプロイ頻度日5〜8回
デプロイ所要時間約3分
ダウンタイムゼロ
追加インフラコストほぼゼロ

小さなチームで追加インフラコストをかけずにダウンタイムゼロを実現。新旧バージョンが混在する時間は最大3分で、APIの後方互換さえ守れば問題にならなかった。

例2:決済プラットフォームがBlue-Green Deploymentで瞬時ロールバックを確保する

月間GMV50億円の決済プラットフォーム。1分のダウンタイムで推定800万円の損失が出るため、ロールバック速度が最優先要件だった。

AWS ECSでBlue-Green環境を構築。ALBのターゲットグループ切り替えでデプロイとロールバックを実装。

  • 新バージョン(Green)を起動し、ヘルスチェック通過を確認
  • ALBのターゲットを一括切り替え(所要時間 約5秒
  • 問題発覚時は即座にBlueに戻す(所要時間 約5秒

インフラコストは約1.8倍になったが、障害時の損失リスクを考えれば投資対効果は十分。過去1年間のデプロイ起因障害は ゼロ

例3:メディアサイトがCanary Deploymentで大規模リファクタリングを安全にリリースする

月間PV3,000万のメディアサイト。検索エンジンの大規模リファクタリングを控えており、全ユーザーに一気にリリースするのはリスクが高すぎた。

Istioを使ったCanary Deploymentを導入。

  • 初日: 全トラフィックの1%を新バージョンに配信
  • 3日目: 問題なしを確認し10%に拡大
  • 7日目: 50%に拡大。検索精度の比較検証
  • 10日目: 100%に展開

1%の段階でレイテンシの微増を検出し、インデックスの最適化を追加。修正後に再度1%から展開し直した。最終的に検索レスポンスが 20%改善 した状態でリリース完了。一気にリリースしていたら全ユーザーにレイテンシ悪化が影響していた。

やりがちな失敗パターン
#

  1. 新旧バージョンの互換性を考えない — Rolling/Canaryでは新旧が混在する。APIやDBスキーマの後方互換を保つ設計が前提
  2. すべてのサービスに同じ戦略を使う — 内部ツールにBlue-Green、決済システムにRecreateは明らかに不適切。サービスごとに最適な方式を選ぶ
  3. Canaryのメトリクス比較を自動化しない — 目視でメトリクスを比較すると見逃しが起きる。CanaryとBaselineの自動比較(Kayenta等)を導入する
  4. Blue-Greenの旧環境をすぐに削除する — 問題は数時間後に判明することもある。旧環境は最低24時間は残しておく

まとめ
#

デプロイメント戦略は 「ダウンタイム許容度」 「ロールバック速度」「リソース制約」 の3軸で選ぶ。多くのケースではRolling Deploymentが最初の選択肢になり、リスクの高いリリースにはCanary、瞬時のロールバックが必須ならBlue-Greenを使い分ける。どの方式を選んでも、新旧バージョンの互換性確保とデプロイ後の自動監視が成功の土台。