見出し画像

負荷テストツール選定のすすめ

はじめに

「ようやくリリースだ!」

「あれ?? 開発時は問題なかったのに、多くのアクセスが来るとエラーになってしまう...」

満を辞してリリースしたのに、性能問題が出たことはありませんか?
こうならないためにも、リリース前に負荷テストを行い、性能問題が起きないか確認しておくことは重要です。

ここでは案件先で負荷テストツールの選定を行ったので、簡単にまとめてみます。

様々なツールの紹介

Apache JMeter

  • 昔からあるツールなので情報は沢山ある

  • プラグインも充実しており機能拡張も可能

  • 実装言語はJava

    • Javaの実行環境が必要になる

  • シナリオはGUIで作成(XMLで出力可能)

Gatling

  • 結果レポートがHTMLで作成される

  • 実装言語はScala

  • シナリオはScalaで作成

    • v3.7からはJava, Kotlinにも対応

k6

  • 2017年頃からリリースされた比較的モダンなツール

  • 利用者も増えている印象

  • 実装言語はGo

  • シナリオはJavaScriptで作成

vegeta

  • ドラゴンボールのベジータが元ネタ

  • CLIとしても、ライブラリとしても利用可能でシンプルさが特徴

    • 簡単なものならコマンドラインだけで完結可能

  • 実装言語はGo

  • シナリオはGoで作成

Locust

  • 見やすいWeb UI

  • 分散型でスケーラブル

  • 実装言語はPython

  • シナリオはPythonで作成

自分達の選定基準

  • Pythonに慣れているメンバーが多いこと

  • 特殊なプロトコルに対応できること

から自分達はLocustを選定しました。

特に2点目については選定基準として必須でした。
対象アプリのAPIとしてWebSocket APIが主であり、かつMessagePack-RPC となっていたためです。
Locustの場合、Pythonのモジュールを活用できるため、このようなプロトコルにおいても負荷をかけるシナリオを実装できました。
また分散型でスケーラブルなこともあり、負荷をかけるユーザー数が増えたとしても対応しやすいのも良い点でした。

今回は選びませんでしたが、個人的にはk6も使い勝手が良さそうに思ったので、またどこかで試してみたいです。

おわりに

負荷テストツールは今回紹介したもの以外にも多くあります。
どれを使っても負荷テストは実施できるはずなので、自分達なりの選定基準を決めて選ぶことが大切です。
また負荷テストツール選定以外にも、実施目的や結果の検証方法など考えることは沢山あります。
この辺りもどこかでまとめられると良いなと思います。

この記事が気に入ったらサポートをしてみませんか?