カナリア テストとは何か、そしてそれからどのように利益を得ることができるか?
公開: 2022-08-20プログラマーでない場合、カナリア テストについて聞いたことがない可能性があります。 それは問題ありませんが、おそらくそれが何であるか、なぜカナリア テストと呼ばれているのか疑問に思われるでしょう。
この用語は、「炭鉱のカナリア」というフレーズに由来します。 ご存知のように、カナリアは有毒ガスに対する耐性が低いため、炭鉱夫は檻に入れられたカナリアを炭鉱に持ち込んでいました。
したがって、労働者は、カナリアが死んだ場合、鉱山から出なければならないことを知っていました。 ソフトウェア開発に関して言えば、新しいソフトウェアを作成するときの目標は、問題がユーザーにとって問題になる前に、できるだけ早く検出して解決することです。
カナリアテストとは?
カナリア テストは、ユーザー側への悪影響を最小限に抑えながら、新しい機能を試す方法です。 このタイプのテストは通常、アプリケーションに小さな変更を加えた少数のユーザー グループで使用されます。 このようにして、大多数のユーザーは現在のバージョンのソフトウェアを引き続き使用しますが、選択された少数のユーザー グループはわずかにアップグレードされたバージョンを使用します。
この演習の目的は、少数のユーザーのみに変更をプッシュしながら、ソフトウェアを使用している大多数のユーザーが問題なく作業を継続できるようにすることです。
これは、アプリケーションの既存のバージョンと新しいバージョンの両方を同時に実行しながら、すべて実行されます。 次に、カナリア テストでエラーが返されない場合は、さらに多くのユーザーにテストを拡大できます。
読者も楽しめる: ラピッド アプリケーション開発とはRAD 方法論の 4 つのフェーズ – DevriX
カナリア テストの実行方法
カナリア テストの最初のステップは、一連のバックエンド サーバーまたはコンテナーを起動して、新しいコードを実行することです。 新しいユーザーが増えると、ロード バランサーはその一部を「カナリア クラスター」に送信します。
次に、DevOps スペシャリストがサーバーを監視して、コンピューティング負荷や I/O レートの上昇などの潜在的な問題を特定します。 また、重大な問題が発生した場合でも、ソフトウェアを使用しているすべての人にプロセスが影響するわけではないため、元に戻すのは簡単です。
それ以外の場合は、Spinnaker などのツールを使用して新しいコードを使用するユーザー数を指定することで、カナリア テストを簡単に実装および自動化できます。
この割合は通常約 5% であり、割り当てられた DevOps チームが問題がないことを確認したら、全員がアプリケーションの新しいコード バージョンを使用するまで、その割合を着実に増やすことができます。
さらに、カナリア テストは、開発環境やステージング環境が本番環境と完全に一致しない場合に役立ちます。 ユーザーの小さなテスト グループを使用すると、ステージングまたは開発環境で検出されなかった問題を明らかにすることができます。
読者も楽しめる: WordPress を使用した A/B テスト: 決定版ガイド – DevriX
カナリア テストの利点と欠点
カナリア法を使用して、テストに関して良い点と悪い点を定義しましょう。
カナリアテストの利点
- 実際のテスト。 閉じた内部環境でのテストは素晴らしいことですが、実際のユーザーでソフトウェアをテストできるということは、さらに一歩先を行くものです。 カナリア デプロイを使用すると、まったく新しいアプリケーションをリリースするリスクを負うことなく、小規模な対象者でアプリケーションをテストできます。
- より良いリスク管理。 新しい機能を徐々にリリースし、それらが適切に機能することを確認することで、重大なエラーと障害の総コストが大幅に削減されます。
カナリア テストの方法を使用すると、基本的に、メジャー アップデートをロールバックしたり、大量のコードを書き直したりする必要がなくなります。 - よりビジネス志向。 マネージャーやマーケティング/営業担当者にビジネス データを提示する必要がありますか? Canary を使用すると、非常に迅速に結果を表示できます。 たとえば、新しいソフトウェア機能をテストする場合、少人数のユーザー グループに新しい機能を展開し、その機能がうまく機能しないかどうかを確認します。その後、このデータを使用してエンゲージメントを促進できます。あなたの製品。
カナリアテストの欠点
- ソフトウェアの問題。 まだテストされていないコードがあるので、当然、リスクが伴います。 少数のユーザーでも特定の機能で重大な問題が発生している場合は、カナリア テストをスキップして、より厳密な内部テストを行うことをお勧めします。
- より大きな費用。 ロード バランサーを使用してユーザーを分割する場合は、追加のインフラストラクチャと管理が必要になります。 つまり、テストを実行するには、2 つの別個の運用環境とバックエンドを作成する必要があります。 つまり、2 つのアプリ サーバー、2 つのコード行、2 つの Web サーバー、および維持するネットワーク インフラストラクチャです。
- ユーザー エクスペリエンスが悪い。 一部のユーザーは、テスト対象として使用されるという考えにあまり熱心ではないかもしれません. 何が起こっているのかをオープンにしたい場合は、「早期採用」プログラムなどを通じて、「カナリア」として使用されていることをユーザーに知らせることができます。
カナリア テストを使用しない場合
カナリア テストは多くの場合に有益ですが、すべてに対する確実な答えではありません (42)。
カナリア アプローチを絶対に使用してはならない場合は次のとおりです。
- 継続的な展開に適していない環境。
- 生命維持システムや原子炉などの重要なソフトウェアを扱う場合。
- 障害が重大な経済的影響をもたらす可能性がある金融システム。
ソフトウェアをリモートで更新できない場合。
カナリア デプロイの方法
それでは、カナリア デプロイを実行するために必要な手順を見てみましょう。
- ステージング サーバーへの展開を準備します。
- 負荷分散によってカナリア ノードを除外します。
- 新しいバージョンをカナリア ノードにデプロイします。
- 自動化されたテスト スクリプトを使用して、新しいバージョンをテストします。
- ロード バランシングを使用してカナリア ノードをトラフィックに接続します。
- 残りの本番ノードに更新をロールアウトします。
実際には、展開はステージング サーバーの準備から始まります。 構成ファイル、テスト スクリプト、ビルド アーティファクトなどを確認します。 その後、自動テストまたは手動テストを実行するか、サーバーを稼働させたままにして、すべてが正常に動作するかどうか、またはクラッシュするかどうかを確認できます。
Canary を本番環境にプッシュするタイミングは?
カナリア アップデートを 5 ~ 10% のユーザーでテストし、すべてが正常に機能していれば、テスト ユーザーの割合を 2 倍または 3 倍にすることができます。
次に、再度テストを行い、メトリクスからフィードバックを収集します。すべてが正常に機能していることを評価したら、もう一度、運用環境の 70% を更新することができます。
最後に、テスト手順を繰り返します。問題がなければ、ソフトウェアの新しいバージョンを 100% のユーザーに展開し、もちろん監視を続けます。
カナリア展開を実施している企業
カナリア デプロイが一般的な実装方法であることを示すために、カナリア デプロイを使用しているいくつかの企業を見ていきます。
ネットフリックス
ストリーミング サービスの巨人は、2018 年から Kayenta による自動カナリア分析を使用しています。これにより、Netflix の本番環境を非常に高速に更新できます。 同社は、この展開方法により、開発者の生産性が向上し、実稼働環境に変更を加えるリスクが軽減されたと述べています。
インスタグラム
このソーシャル メディア プラットフォームは、カナリア デプロイメントの長年の支持者でもあります。 共同創設者で CTO の Mike Krieger 氏は、カナリア リリースにより、バグによる被害が大きくなりすぎず、少数の人々にのみ影響を与えることが保証されると述べています。
グーグル
Google Chrome には開発者向けの特別なバージョンがあることをご存知ですか? そうです、Google Chrome Canary を使用すると、新しい Web プラットフォーム API をテストし、ブラウザの将来がどのようになるかを誰よりも早く確認できます。
マイクロソフト
Microsoft は自社のスタッフを使用して、すべての製品更新プログラムのカナリア テストを行っています。 このプロセスは、Windows Vista および Microsoft Azure から導入されています。 Windows 10 のアップグレードも、スタッフのオペレーティング システムのカナリア更新を使用して行われました。
概要
カナリア テストは、実際のテスト環境で新しいアプリケーション バージョンを迅速に導入するための優れた方法です。 それだけでなく、より優れたリスク管理とより追跡可能なデータが可能になります。
カナリア テストには非常に多くの利点がありますが、すべての状況を解決できるわけではありません。 カナリア デプロイを開始する前に、必ず調査を行ってください。そうしないと、逆効果になる可能性があります。