ひとことで言うと#
デプロイ済みのコードを「誰にどの順序で公開するか」をカナリア→リングロールアウト→GA(全員公開)の段階で制御し、リリースリスクを最小化するデリバリー戦略。
押さえておきたい用語#
- Progressive Delivery(プログレッシブ デリバリー)
- Continuous Deliveryの拡張で、デプロイとリリースを分離し段階的に公開範囲を広げる手法を指す。
- Canary Release(カナリア リリース)
- 新バージョンをごく少数のユーザー(1-5%)に先行公開して問題がないか検証する手法を指す。
- Ring-based Rollout
- ユーザーをリング(層)に分け、内側から外側へ段階的に公開範囲を広げるロールアウト手法。
- GA(General Availability)
- 全ユーザーに公開された状態。カナリア・リング展開を経て到達する最終段階である。
- Automated Rollback(自動ロールバック)
- エラー率やレイテンシが閾値を超えた場合に自動で前バージョンに戻す仕組み。
プログレッシブ・デリバリーの全体像#
こんな悩みに効く#
- リリース直後にバグが全ユーザーに影響してしまう
- 「デプロイが怖い」ためリリース頻度が上げられない
- ロールバックに時間がかかり、障害の影響が拡大する
基本の使い方#
具体例#
月間200万トランザクションのEC。新しい決済フローをビッグバンリリースした際、バグで 全トランザクションの12% が失敗。復旧に 45分 かかり、推定損失は 3,200万円。
プログレッシブ・デリバリーを導入。
| 段階 | 対象 | 滞在時間 | ゲート条件 |
|---|---|---|---|
| Canary | 1% | 30分 | エラー率 < 0.1% |
| Ring 1 | 10% | 2時間 | CVR低下なし |
| Ring 2 | 50% | 6時間 | レイテンシ正常 |
| GA | 100% | — | フラグ削除 |
次の決済フロー更新時、カナリア段階でエラー率 0.8% を検知し自動ロールバック。影響はユーザーの 1% にとどまり、損失は前回の 1/30以下 に。
エンジニア60名のBtoB SaaS。大口エンタープライズ顧客10社の売上が全体の 45% を占めており、これらの顧客への影響が最も大きなリスクだった。
リングを顧客セグメントで定義。
| リング | 対象 | 優先度 |
|---|---|---|
| Canary | 社内テナント + フリープラン | 最初に公開 |
| Ring 1 | 中小顧客(200社) | 1日後に公開 |
| Ring 2 | エンタープライズ(10社) | 3日後に公開 |
Ring 1でUI変更による操作率低下を検出し、修正を入れてからRing 2に進んだ。エンタープライズ顧客への影響はゼロで、以前は月に 2件 あった大口顧客からのクレームがプログレッシブ・デリバリー導入後はゼロに。
月間アクティブユーザー500万人のモバイルゲーム。サーバー側のアップデートで課金APIのレイテンシが悪化し、課金CVRが 15%低下 するインシデントが四半期に1回のペースで発生していた。
Argo Rolloutsで自動カナリア分析を導入。課金APIのp99レイテンシとCVRを自動監視し、閾値超過で自動ロールバックする設定にした。
導入後6ヶ月で自動ロールバックが 3回 発動。いずれも5%以下のユーザー影響で食い止められ、CVR低下による損失は以前の 1/20 に。「デプロイが怖い」という文化がなくなり、デプロイ頻度が 週2回 → 日1回 に増加した。
やりがちな失敗パターン#
- カナリアの対象が社内だけ — 社内テスターだけでは本番のトラフィックパターンを再現できない。実際のユーザートラフィックの一部を流す
- ゲート条件が曖昧 — 「問題なさそうだったら次に進む」では属人的になる。エラー率・レイテンシ・ビジネスKPIの閾値を数値で定義する
- 自動ロールバックの設定が厳しすぎる — 毎回ロールバックが発動するとリリースが進まない。閾値は統計的に妥当な値に設定する
- カナリア段階の滞在時間が短すぎる — 5分では統計的に有意なデータが取れない。最低30分〜1時間は滞在させる
まとめ#
プログレッシブ・デリバリーはデプロイとリリースを分離し、カナリア→リング→GAの段階で公開範囲を広げていくデリバリー戦略。各段階にゲート条件(エラー率・レイテンシ・ビジネスKPI)を設定し、閾値を超えたら自動ロールバックすることで、リリースリスクを最小化する。「デプロイが怖い」 という文化を解消し、高頻度リリースと品質担保の両立を実現するための仕組みである。