Skip to content
Latchkey

Canary Deploymentとは?

Canary deploymentは、新しいバージョンをまず少数のユーザーにリリースし、それを観察してから全員にロールアウトします。

この名前は炭鉱のカナリアに由来します: 早期の警告です。canary deploymentは新しいバージョンを実トラフィックの小さなスライスにさらすので、何か問題があっても影響を受けるのは少数のユーザーだけで、全員にロールアウトする前に気づけます。

仕組み

新しいバージョンを古いものと並べてデプロイし、少ない割合のトラフィック、例えば1から5パーセントをそれ、つまりcanaryにルーティングします。エラー率やレイテンシといったメトリクスを監視します。canaryが健全に見えれば、その割合を段階的に増やして最終的に全トラフィックを処理させます。そうでなければ、引き戻します。

ロールアウトはどう進むか

  • 現在のものの隣に新しいバージョンをデプロイする。
  • トラフィックの小さなスライスを新しいバージョンにルーティングする。
  • エラー、レイテンシ、主要なメトリクスを監視する。
  • 健全であれば割合を段階的に上げる。
  • メトリクスが悪化したら即座にrollbackする。

新しいcheckoutサービスが、トラフィックの2パーセントでcanaryとしてロールアウトされます。数分以内に、モニタリングがcanaryで高いエラー率を示します。影響を受けたのはユーザーの2パーセントだけなので、チームは最小限の影響でrollbackし、バグを修正して再び試みます。広範囲の障害はありません。

なぜモニタリングが鍵なのか

canaryは、正しいシグナルを監視している場合にのみ有用です。この戦略全体は、小さなサンプルから不良リリースを、それを拡大する前に検知することにかかっています。それには良好なメトリクス、canaryとbaselineの自動比較、そして閾値を超えたときに自動的に停止またはrollbackする能力が必要です。

canary対blue-green

Blue-greenはすべてのトラフィックを一度に切り替えます(即座だが全員が一緒に移動する); canaryはトラフィックを段階的に移動させます(遅いが各ステップで露出を制限する)。canaryはリスクをより細かく制御でき、blue-greenは最もクリーンな即座のrollbackを与えます。多くのチームは両方のアイデアを組み合わせます。

重要なポイント

  • Canary deploymentは、まず小さなスライスに新しいバージョンをさらします。
  • 健全なメトリクスは段階的な増加を、不良なものはrollbackをトリガーします。
  • その価値はcanaryの良好なモニタリングに依存します。

関連ガイド