カナリアリリース かなりありりーす
デプロイ戦略段階的リリーストラフィック制御ロールバックフィーチャーフラグリスク低減
カナリアリリースって何?鳥の名前みたいだけど
カナリアリリースとは
カナリアリリースとは、新バージョンを全ユーザーに一度に公開するのではなく、最初は少数のユーザー(全体の1〜10%)だけに提供し、問題がないことを確認しながら徐々にトラフィックを拡大していくリリース戦略です。名称は炭鉱の安全確認に使われたカナリアの故事に由来します。
問題が発生した場合、影響を受けるのは少数のユーザーだけなので、ブルーグリーンデプロイメントよりリリースの影響範囲を小さく保てます。メトリクス(エラーレート・レイテンシ・コンバージョン率など)を監視しながら、段階的に比率を上げていきます。「ゲートウェイを通過した」「特定の地域のユーザー」「社内テスター」など、対象ユーザーをセグメントで絞ることも可能です。
カナリアリリースとフィーチャーフラグを組み合わせることで、デプロイとリリースをさらに分離できます。コード自体は全サーバーにデプロイ済みで、フラグのON/OFFで特定ユーザーだけに機能を公開する方法はDark Launch(ダークローンチ)とも呼ばれます。
カナリアリリースの段階的トラフィック移行
| フェーズ | 新バージョンへのトラフィック | 判断条件 |
|---|---|---|
| Phase 0(ダークローンチ) | 0%(ログのみ収集) | 内部テスト完了 |
| Phase 1 | 5% | エラーレート変化なし・レイテンシ正常 |
| Phase 2 | 25% | SLO指標(エラー率・P99レイテンシ)達成 |
| Phase 3 | 50% | ビジネス指標(コンバージョン等)に異常なし |
| Phase 4 | 100% | 全指標が一定期間正常を維持 |
歴史と背景
- 2014年:Jez HumbleがQCon講演でカナリアデプロイメントを体系化。Netflixやoogleが先行実践
- 2016年〜:Kubernetesのデプロイ機能とサービスメッシュ(Istio等)でトラフィック比率制御が容易に
- 2017年〜:LaunchDarkly・Split等のフィーチャーフラグサービスが台頭。カナリアとフラグの組み合わせが一般化
- 2019年〜:Argo Rollouts・Flagger等のProgressive Deliveryツールが自動カナリア分析(エラー率監視→自動ロールバック)を実現
- 2022年〜:DORA Metricsに「変更失敗率」が含まれ、カナリアリリースによる失敗率改善がDevOpsの指標として重要視
カナリアリリースのトラフィック制御
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| Argo Rollouts | KubernetesのカナリアリリースをAnalysis(自動分析)付きで実現するOSSツール |
| Flagger | Kubernetes上でのカナリア・ブルーグリーンを自動化するCNCFプロジェクト |
関連用語
- ブルーグリーンデプロイメント — 2環境を用意して一気に切り替えるデプロイ戦略。カナリアと対比される
- フィーチャーフラグ — コードのON/OFFで特定ユーザーに機能を公開する。カナリアと組み合わせ可能
- サービスメッシュ — IstioのVirtualServiceでトラフィック比率を精密に制御できる
- CI/CDパイプライン — カナリアリリースの各フェーズをパイプラインで自動化する
- オブザーバビリティ — カナリアのメトリクス監視には充実したオブザーバビリティが必要
- メトリクス・SLO — SLOをカナリアの進行判断基準に使う(SLO-based progressive delivery)
- SRE — SREがカナリアの判断基準(SLO・エラーバジェット)を設定・管理する