カナリア分析とは?
カナリア分析は、小さなカナリアリリースを既存のベースラインバージョンと比較し、データに基づいて新しいバージョンをさらに展開しても安全かどうかを判断する実践です。
カナリアへのリリースは話の半分にすぎません。カナリアが健全かどうかをまだ判断しなければなりません。カナリア分析はその判断の部分です。ライブの metrics を使って go か no-go の判断を下す、新旧バージョンの厳密で、理想的には自動化された比較です。
カナリアリリース 対 カナリア分析
カナリアリリースは、トラフィックの小さな一部を新しいバージョンにルーティングします。カナリア分析は、その結果得られたデータで行うこと、つまりカナリアの振る舞いをベースラインと体系的に比較することです。リリースは新しいバージョンを露出させ、分析はその運命を決めます。
ベースラインと比較する
最も信頼できる比較は、同時に、同じ条件下で旧バージョンを実行するコントロールベースラインとカナリアを比較することです。両方を現在のライブトラフィックに対して比較すると、時間帯の影響や負荷パターンを制御できるため、見られる差は瞬間ではなく変更によるものになります。
何を測定するか
- エラー率と失敗したリクエスト。
- 意味のあるパーセンタイルでのレイテンシ。
- CPU やメモリのようなリソース使用量。
- 主要なビジネスまたはプロダクトの metrics。
自動化されたカナリア分析
成熟したチームは判断を自動化します。システムは多くの metrics にわたってカナリアをベースラインに対してスコアリングし、合格か不合格の判定を生成し、健全なカナリアを自動的に昇格させるか、悪いものを rollback します。自動化は人間のバイアスを取り除き、プロセスを速く再現可能にします。
統計的な慎重さ
小さなカナリアはトラフィックが少ないため、その metrics はよりノイズが多く、誤ったシグナルを出しやすくなります。優れたカナリア分析は、十分なサンプルサイズと統計的閾値でこれに対処し、良いリリースをブロックする誤警報と、悪いものを通す誤った自信の両方を避けます。
重要なポイント
- カナリア分析は、先へ進むかどうかを判断するためにカナリアリリースをベースラインと比較します。
- カナリアとベースラインを並べて比較すると、時間や負荷の影響を制御できます。
- 自動化され、統計的に慎重な分析は、go/no-go の判断を速く偏りなくします。