Vegetaというのは、HTTPの負荷テストツールです。GithubのVegetaを見ると某アニメのキャラクターがあって、テンションが上がります! 今回は、本格的に利用するにあたりどんなツールなのか、どんなことが出来るかを簡単にまとめていこうと思います。

どんなツールなのか

特徴は下記の通りです。

  • Go言語で作成されている
  • CLIとしても使える
  • ライブラリとして利用出来る

インストール

ローカルで触ってみる為にmacにインストールをしてみようと思います。下記のコマンドで簡単にインストール出来ます。

brew update && brew install vegeta

検証に使うサンプルプログラム

今回は、下記のgolangで記載されたhttpサーバを利用します。echパッケージなどは利用せず、標準パッケージのnet/httpを利用することにします。

package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, World")
}

func main() {
	http.HandleFunc("/", handler) // ハンドラを登録してウェブページを表示させる
	http.ListenAndServe(":8080", nil)
}

実行する。

下記のようなコマンドを実行してみます。

echo 'GET http://localhost:8080' | vegeta attack -rate=10 -duration=5s | vegeta report   

今回のコマンドは、duration=5srate=10は、5秒間の間、10 req/secで指定したURLにアクセスすることを示しています。

実行結果

出力結果に記載されているので、そこを参考にみてみると、min、means、50%、95%、99%のレスポンスタイムが収まる時間、最も遅い時間が表示される。report種別を変更したりすることでjson形式への出力も出来るようですね。

まとめ

今回は、ほんの触りしか利用していませんが、個人的にはシンプルで使いやすい印象が強いです。今後は、CI/CDツール等の連携なども意識した利用イメージも視野に入れて検討してみるのも面白いかもしれないですね。