セルフホスト型 Bencher の Docker クイックスタート
Bencherとは何ですか?
Bencherは、連続ベンチマーキングツールのスイートです。 パフォーマンスの後退があなたのユーザーに影響を与えたことはありますか? Bencherなら、それが起こるのを防げた可能性があります。 Bencherは、パフォーマンスの低下を_productionに到達する_前に検出し、防止することを可能にします。
- 実行: お気に入りのベンチマーキングツールを使用してベンチマークをローカルまたはCIで実行します。
bencher
CLIは単にあなたの既存のベンチマークハーネスをラップし、その結果を保存します。 - 追跡: ベンチマークの結果を時間と共に追跡します。ソースブランチ、テストベッド、測定基準に基づいてBencherのWebコンソールを使用して結果を監視、クエリ、グラフ化します。
- キャッチ: CIでパフォーマンスの後退をキャッチします。Bencherは最先端のカスタマイズ可能な分析を使用して、パフォーマンスの後退がProductionに到達する前にそれを検出します。
機能の後退を防ぐためにユニットテストがCIで実行されるのと同じ理由で、Bencherを使用してCIでベンチマークを実行してパフォーマンスの後退を防ぐべきです。パフォーマンスのバグはバグです!
Bencher セルフホスト
Bencher はオープンソースでセルフホスト可能です。 Bencher Cloud を使用することに興味があるなら、Bencher Cloud クイックスタートチュートリアルを確認してください。 このチュートリアルでは、Dockerを使用して Bencher セルフホストの設定を行います。
🐰 Bencher セルフホストの使用に慣れてきたら、次のリソースもチェックしてみてください:
Docker をインストールする
このチュートリアルのUIとAPIサーバーを実行するには、docker
がインストールされている必要があります。 docker
がインストールされているかどうかを確認してください。
実行: docker --version
すると、以下のような表示がなされます:
バージョン番号が異なっていても構いません。このコマンドが動作することが重要です。
もし動作しない場合は、docker
のインストール手順に従ってください。
bencher
CLIのインストール
Linux、Mac、およびUnix
Linux、Mac、およびその他のUnix系システムでは、ターミナルで以下を実行します:
Windows
Windowsシステムでは、以下のように_PowerShell_ターミナルで実行します:
🐰
このシステムではスクリプトの実行が無効化されています
というエラーが表示される場合:
管理者として実行
でPowershellを開く
- 以下を実行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- 次に入力:
Y
- このスクリプトを再実行
追加のインストールオプションについては、bencher
CLIのインストール方法を参照してください。
今度は、bencher
CLIがインストールされていることをテストしましょう。
実行: bencher --version
次のように表示されるはずです:
Bencher UI&APIサーバーを実行する
docker
がインストールされていれば、UIとAPIサーバーを実行できます。
実行コマンド:bencher up
以下のような表示がされます:
出力が少し違っていても大丈夫です。このコマンドが動作すればそれで問題ありません。
🐰
ghcr.io
から:"authentication required"
というエラーメッセージが表示される場合は、docker logout ghcr.io
を実行してみてください。
🐰 Windows上で:
image operating system "linux" cannot be used on this platform: operating system is not supported
というエラーが出る場合は、& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchLinuxEngine
を実行してみてください。
Bencher APIサーバーログ
まだAPIサーバーで電子メール/SMTPを設定していないため、チュートリアルの後半で受け取る認証コードは、上記のようにサーバーログに表示されます。
つまり、認証情報はbencher up
の出力に表示されます。
Bencher ホストの設定
bencher
CLIのデフォルトホストはBencher Cloud (つまり https://api.bencher.dev )です。
したがって、あなたのホスト名を設定する必要があります。これを行う最も簡単な方法は、BENCHER_HOST
環境変数を使用することです。
新しいターミナルウィンドウを開きます。
Linux、Mac、およびその他のUnix系システムで実行: export BENCHER_HOST=http://localhost:61016
Windowsで実行: $env:BENCHER_HOST = "http://localhost:61016"
その後、echo $BENCHER_HOST
または Write-Output $env:BENCHER_HOST
をそれぞれ実行します。
次のことが表示されます:
ベンチャーセルフホストアカウントの作成
Bencher Self-Hostedに登録する
以下のURLに進んで、ローカルのBencher Self-Hostedインスタンスにアカウントを作成します:http://localhost:3000/auth/signup
アカウントを作成したら、bencher up
を実行したターミナルウィンドウに戻ります。
次のような表示がされるはずです:
ブラウザでConfirm Email
リンクに移動するか、Confirmation Token
をコピーして、以下のURLのConfirm Token
フィールドに貼り付けて下さい:http://localhost:3000/auth/confirm
それを行った後、Bencher Self-Hostedのアカウントにログインすることができるはずです!
APIトークンの生成
Bencher APIを使用するためには、APIトークンを生成する必要があります。
Bencherコンソールに移動します。
右上隅のあなたの名前の上にマウスを持って行きます。
ドロップダウンメニューが表示されるはずです。Tokens
を選択します。
APIトークンページに移動したら、➕ Add
ボタンをクリックします。
APIトークンの追加
新しいAPIトークンを生成したら、それをクリップボードにコピーする必要があります。 作業予定のターミナルで、APIトークンを環境変数としてエクスポートします。
Linux、Mac、その他のUnix系システムでは、次のように実行します: export BENCHER_API_TOKEN=YOUR_TOKEN
Windowsでは、次のように実行します: $env:BENCHER_API_TOKEN = "YOUR_TOKEN"
その後、echo $BENCHER_API_TOKEN
またはWrite-Output $env:BENCHER_API_TOKEN
を実行します。
以下のように表示されるはずです:
🐰 注意: 別のターミナルに移動する場合、APIトークンを再度エクスポートする必要があります。
プロジェクトを作成する
ユーザーアカウントとAPIトークンを取得したので、プロジェクトを作成することができます。 まず、新しいプロジェクトが所属する組織を知る必要があります。
実行:bencher org list
以下のような結果が表示されます:
あなたの出力は上記と少し異なるはずです:
uuid
は疑似ランダムですname
とslug
はあなたのユーザー名に基づいていますcreated
とmodified
のタイムスタンプは、あなたが登録した時刻になります
では、その組織内に新しいプロジェクトを作成できます。
以下のコマンドのorganization
引数に、組織のslug
(つまり、YOUR_ORG_SLUG
)を代入します。
実行:bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
以下のような結果を見るはずです:
再度、あなたの出力は上記の結果と少し異なるはずです。
大切なのは、このコマンドが動作することです。
プロジェクトのslug
フィールド(つまり、save-walter-white-1234abcd
)を記録しておいてください。
レポートを実行する
ついにベンチマークのメトリックを収集する準備が整いました! このチュートリアルでは簡単のため、モックデータを使用します。
実行:bencher mock
以下のような結果が表示されます:
あなたの出力は上記の結果と少し異なるはずです、なぜならデータは疑似ランダムだからです。 大切なのは、このコマンドが動作することです。
では、モックのベンチマークメトリックデータを使用してレポートを実行してみましょう。
下記のコマンドの--project
引数に、プロジェクトslug
(つまり、YOUR_PROJECT_SLUG
)を代入します。
実行:bencher run --project YOUR_PROJECT_SLUG "bencher mock"
以下のような結果が表示されます:
ここでもブラウザで各ベンチマークの結果を見ることができます。
View results
からリンクをクリックするか、コピーしてペーストします。
各ベンチマークには一つだけのデータポイントがあるはずなので、データをもっと追加しましょう!
まず、プロジェクトのスラッグを環境変数として設定して、それぞれの実行で--project
を指定しなくても済むようにしましょう。
実行: export BENCHER_PROJECT=save-walter-white-1234abcd
その後、次のように実行してください: echo $BENCHER_PROJECT
以下のように表示されます:
同じコマンドをもう一度--project
なしで実行し、さらにデータを生成します。
実行: bencher run "bencher mock"
さらにデータを生成しますが、今度は結果をbencher run
にパイプします。
実行: bencher mock | bencher run
時々、結果をファイルに保存し、bencher run
でそれらを取得したいことがあります。
実行: bencher run --file results.json "bencher mock > results.json"
また、別のプロセスでベンチマークを実行し、結果をファイルに保存すると、bencher run
がそれらを取得します。
実行: bencher mock > results.json && bencher run --file results.json
最後に、bencher run
の--iter
引数を使用して多くのデータを生成します。
実行: bencher run --iter 16 "bencher mock"
🐰 ヒント:
bencher run
CLIサブコマンドのドキュメントをチェックして、bencher run
ができるすべてのことを完全に把握してください!
アラートを生成する
ベンチマークの履歴データが手元にあるので、アラートを生成しましょう! アラートは、ベンチマーク結果がパフォーマンスリグレッションと判断されたときに生成されます。 それでは、パフォーマンスリグレッションを模擬しましょう!
実行:bencher run "bencher mock --pow 8"
出力の最後に新しいセクションが追加され、View alerts
と表示されます:
ブラウザで各ベンチマークのアラートを見ることができます。
View alerts
からリンクをクリックするか、コピーしてペーストします。
🐰 ヒント: パフォーマンスリグレッションがどのように検出されるかの全体像を把握するため、閾値&アラートドキュメントをチェックしてください!
🐰 おめでとうございます!初めてのパフォーマンスリグレッションを捕まえました!🎉