Locust vs k6: CIにはどちらの負荷テストツールか?
LocustはPythonで負荷テストを記述し、分散workerモデルでスケールする。k6はJavaScriptを使い、軽量でCIネイティブなsingle binaryである。
LocustはPythonベースの負荷テスターで、ユーザー行動をコードで定義し、master/workerモデルでスケールし、ライブなweb UIを持つ。k6 (Grafana) はJavaScriptでスクリプトを書くGoバイナリで、低リソース使用量とCIのthresholdに最適化されている。
| Locust | k6 | |
|---|---|---|
| スクリプト言語 | Python | JavaScript |
| Runtime | Python | Go (single binary) |
| スケールモデル | Master/worker分散 | Single binary (スケールにはk6 cloud) |
| ライブUI | あり (web UI) | CLI + Grafana |
| CIへの適合 | 良好 (headless) | 非常に良好 (threshold) |
CIにおいて
k6は第一級のCLI thresholdを備えたsingle binaryであり、CIでのpass/failのgatingを容易にし、リソース使用量を低く保つ。LocustはPythonチームに魅力的で - 挙動が素のPythonであり - workerを介して水平にスケールするため、非常に高い負荷に有用だが、そのmaster/workerのセットアップはCIのオーケストレーションを増やす。言語の好みと、負荷をどうスケールするつもりかで選ぶ。
CIで実行する
threshold (k6) またはassertion (Locust) でgateし、回帰でビルドが失敗するようにし、能力の高いrunnerで分散/高負荷プロファイルを実行する。負荷生成はリソースを多く消費する。より大きく高速なマネージドrunnerはrunnerあたりより多くの負荷を生成し、重い実行をより早く終える。
結論
Pythonチーム、または非常に高い負荷向けに分散workerモデルが必要: Locust。クリーンなCIのthresholdを備えた軽量なsingle binaryが欲しい: k6。CIではthreshold/assertionでgateし、生成する負荷に合わせてrunnerをサイジングする。