プログレッシブ・デリバリー

英語名 Progressive Delivery
読み方 プログレッシブ デリバリー
難易度
所要時間 30分〜1時間
提唱者 James Governor / Continuous Delivery拡張
目次

ひとことで言うと
#

デプロイ済みのコードを「誰にどの順序で公開するか」をカナリア→リングロールアウト→GA(全員公開)の段階で制御し、リリースリスクを最小化するデリバリー戦略。

押さえておきたい用語
#

押さえておきたい用語
Progressive Delivery(プログレッシブ デリバリー)
Continuous Deliveryの拡張で、デプロイとリリースを分離し段階的に公開範囲を広げる手法を指す。
Canary Release(カナリア リリース)
新バージョンをごく少数のユーザー(1-5%)に先行公開して問題がないか検証する手法を指す。
Ring-based Rollout
ユーザーをリング(層)に分け、内側から外側へ段階的に公開範囲を広げるロールアウト手法
GA(General Availability)
全ユーザーに公開された状態。カナリア・リング展開を経て到達する最終段階である。
Automated Rollback(自動ロールバック)
エラー率やレイテンシが閾値を超えた場合に自動で前バージョンに戻す仕組み。

プログレッシブ・デリバリーの全体像
#

プログレッシブ・デリバリー:段階的にリリース範囲を拡大する
Canary1-5%社内テスター+ 一部ユーザーエラー率を監視Ring 110-25%アクティブユーザーの一部に拡大KPIを監視Ring 250-75%大多数のユーザーに拡大パフォーマンス確認GA100%全ユーザーに公開フラグ削除リリース完了Automated Rollback: 各段階で閾値を超えたら自動で戻すエラー率 > 0.5% or レイテンシ p99 > SLO → 自動ロールバックデプロイ(コードを配置) とリリース(ユーザーに公開) を分離する問題があれば少数のユーザー影響で食い止められる
プログレッシブ・デリバリーの進め方フロー
1
デプロイ
全サーバーにコードを配置(まだ非公開)
2
カナリア公開
1-5%のユーザーに公開し指標を監視
3
段階的拡大
問題なければリング単位で公開範囲を広げる
GA(全員公開)
全ユーザーに公開しフィーチャーフラグを削除

こんな悩みに効く
#

  • リリース直後にバグが全ユーザーに影響してしまう
  • 「デプロイが怖い」ためリリース頻度が上げられない
  • ロールバックに時間がかかり、障害の影響が拡大する

基本の使い方
#

デプロイとリリースを分離する仕組みを作る
フィーチャーフラグまたはトラフィック制御(Istio、AWS App Mesh等)で、デプロイ済みコードの公開範囲を制御する。「コードを配置する(デプロイ)」と「ユーザーに見せる(リリース)」を別の操作にする。
カナリア→リング→GAの段階とゲート条件を定義する
各段階で「次に進むための条件」を明確にする。例: カナリア(エラー率 < 0.1%、レイテンシp99 < SLO)→ Ring1(CVR低下なし)→ Ring2(パフォーマンス劣化なし)→ GA。条件を満たさなければ自動ロールバック。
観測性を整備して自動判定を可能にする
各段階の判定に使う指標(エラー率、レイテンシ、ビジネスKPI)をリアルタイムで計測できるようにする。Argo Rollouts、Flagger、LaunchDarklyなどのツールで自動昇格/ロールバックを実現する。

具体例
#

例1:EC企業がカナリアリリースで決済障害の影響を1%に抑える

月間200万トランザクションのEC。新しい決済フローをビッグバンリリースした際、バグで 全トランザクションの12% が失敗。復旧に 45分 かかり、推定損失は 3,200万円

プログレッシブ・デリバリーを導入。

段階対象滞在時間ゲート条件
Canary1%30分エラー率 < 0.1%
Ring 110%2時間CVR低下なし
Ring 250%6時間レイテンシ正常
GA100%フラグ削除

次の決済フロー更新時、カナリア段階でエラー率 0.8% を検知し自動ロールバック。影響はユーザーの 1% にとどまり、損失は前回の 1/30以下 に。

例2:SaaS企業がリング展開でエンタープライズ顧客を守る

エンジニア60名のBtoB SaaS。大口エンタープライズ顧客10社の売上が全体の 45% を占めており、これらの顧客への影響が最も大きなリスクだった。

リングを顧客セグメントで定義。

リング対象優先度
Canary社内テナント + フリープラン最初に公開
Ring 1中小顧客(200社)1日後に公開
Ring 2エンタープライズ(10社)3日後に公開

Ring 1でUI変更による操作率低下を検出し、修正を入れてからRing 2に進んだ。エンタープライズ顧客への影響はゼロで、以前は月に 2件 あった大口顧客からのクレームがプログレッシブ・デリバリー導入後はゼロに。

例3:モバイルゲーム企業が自動ロールバックを導入する

月間アクティブユーザー500万人のモバイルゲーム。サーバー側のアップデートで課金APIのレイテンシが悪化し、課金CVRが 15%低下 するインシデントが四半期に1回のペースで発生していた。

Argo Rolloutsで自動カナリア分析を導入。課金APIのp99レイテンシとCVRを自動監視し、閾値超過で自動ロールバックする設定にした。

導入後6ヶ月で自動ロールバックが 3回 発動。いずれも5%以下のユーザー影響で食い止められ、CVR低下による損失は以前の 1/20 に。「デプロイが怖い」という文化がなくなり、デプロイ頻度が 週2回 → 日1回 に増加した。

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

  1. カナリアの対象が社内だけ — 社内テスターだけでは本番のトラフィックパターンを再現できない。実際のユーザートラフィックの一部を流す
  2. ゲート条件が曖昧 — 「問題なさそうだったら次に進む」では属人的になる。エラー率・レイテンシ・ビジネスKPIの閾値を数値で定義する
  3. 自動ロールバックの設定が厳しすぎる — 毎回ロールバックが発動するとリリースが進まない。閾値は統計的に妥当な値に設定する
  4. カナリア段階の滞在時間が短すぎる — 5分では統計的に有意なデータが取れない。最低30分〜1時間は滞在させる

まとめ
#

プログレッシブ・デリバリーはデプロイとリリースを分離し、カナリア→リング→GAの段階で公開範囲を広げていくデリバリー戦略。各段階にゲート条件(エラー率・レイテンシ・ビジネスKPI)を設定し、閾値を超えたら自動ロールバックすることで、リリースリスクを最小化する。「デプロイが怖い」 という文化を解消し、高頻度リリースと品質担保の両立を実現するための仕組みである。