開発プロセス

カナリアリリース かなりありりーす

デプロイ戦略段階的リリーストラフィック制御ロールバックフィーチャーフラグリスク低減
カナリアリリースって何?鳥の名前みたいだけど

簡単に言うとこんな感じ!

昔、炭鉱夫が毒ガス検知のためにカナリアという鳥を連れて入坑したことから来ている名前だよ。新バージョンのリリース時に、最初は全ユーザーの5%だけに新版を見せて、問題なければ10%・50%・100%と段階的に増やしていく手法なんだ。問題が起きても5%のユーザーしか影響を受けないから安全だね!


カナリアリリースとは

カナリアリリースとは、新バージョンを全ユーザーに一度に公開するのではなく、最初は少数のユーザー(全体の1〜10%)だけに提供し、問題がないことを確認しながら徐々にトラフィックを拡大していくリリース戦略です。名称は炭鉱の安全確認に使われたカナリアの故事に由来します。

問題が発生した場合、影響を受けるのは少数のユーザーだけなので、ブルーグリーンデプロイメントよりリリースの影響範囲を小さく保てます。メトリクス(エラーレート・レイテンシ・コンバージョン率など)を監視しながら、段階的に比率を上げていきます。「ゲートウェイを通過した」「特定の地域のユーザー」「社内テスター」など、対象ユーザーをセグメントで絞ることも可能です。

カナリアリリースとフィーチャーフラグを組み合わせることで、デプロイとリリースをさらに分離できます。コード自体は全サーバーにデプロイ済みで、フラグのON/OFFで特定ユーザーだけに機能を公開する方法はDark Launch(ダークローンチ)とも呼ばれます。


カナリアリリースの段階的トラフィック移行

フェーズ新バージョンへのトラフィック判断条件
Phase 0(ダークローンチ)0%(ログのみ収集)内部テスト完了
Phase 15%エラーレート変化なし・レイテンシ正常
Phase 225%SLO指標(エラー率・P99レイテンシ)達成
Phase 350%ビジネス指標(コンバージョン等)に異常なし
Phase 4100%全指標が一定期間正常を維持

歴史と背景

  • 2014年:Jez HumbleがQCon講演でカナリアデプロイメントを体系化。Netflixやoogleが先行実践
  • 2016年〜Kubernetesのデプロイ機能とサービスメッシュIstio等)でトラフィック比率制御が容易に
  • 2017年〜:LaunchDarkly・Split等のフィーチャーフラグサービスが台頭。カナリアとフラグの組み合わせが一般化
  • 2019年〜:Argo Rollouts・Flagger等のProgressive Deliveryツールが自動カナリア分析(エラー率監視→自動ロールバック)を実現
  • 2022年〜:DORA Metricsに「変更失敗率」が含まれ、カナリアリリースによる失敗率改善がDevOpsの指標として重要視

カナリアリリースのトラフィック制御

カナリアリリース:段階的トラフィック移行 全ユーザー ロード バランサー v1.0(Stable) 95% のトラフィック v2.0(Canary) 5% のトラフィック 95% 5% メトリクス監視 エラーレート・レイテンシ 問題なし → 比率UP 異常検知時:カナリアを0%に戻して自動ロールバック 影響はカナリアのトラフィック比率(5%)のユーザーのみ 問題が限定的なうちに検出。全ユーザーへの影響を最小化できる

関連する規格・RFC

規格・RFC番号内容
Argo RolloutsKubernetesのカナリアリリースをAnalysis(自動分析)付きで実現するOSSツール
FlaggerKubernetes上でのカナリア・ブルーグリーンを自動化するCNCFプロジェクト

関連用語