Azure Load Testing を触ってみた

はじめに

少し前に azure load test が GA されました。azureメインかつ、最近負荷テストを触る機会も多い自分にとっては、かなり喜ばしいニュースです。 気づいた点をメモしていきます。一回触ってみた段階での感想なので正確じゃない箇所もあるかも。

料金

まずは気になる価格を一回調べます

  • ロードテストリソース: 10$
    • ロードテストを実施する基盤となる azure のリソースの値段。
    • 50時間分の仮想ユーザー時間が含まれる
      • テスト時間30分×100ユーザーのシナリオ一回分とか
  • 仮想ユーザー時間 (VUH) の追加使用量
    • 上記の 50時間分の仮想ユーザー時間を使い切るとこっちがかかる
    • 0~9950時間: 0.15$
    • 9951~時間: 0.075$

細かく計算するなら、料金計算ツールが便利。 得られるメリットも含めて考えると個人的には妥当な金額かなと思います。自前のVMやコンテナ上でロードテストをする場合は、それなりの性能のものが必要になったりするので。。

概要

実際に触ってみる

  • 今回は実務で使えそうな、Jmeterスクリプトを使用するテストを使ってみます
  • テスト計画でシナリオをアップロードする
  • 読み込みタブからエンジンインスタンス数を調整する
    • エンジンインスタンスというものがあるようで、1 エンジンインスタンスにつき 250スレッド(多重数) 目安で抑えることが推奨されているようです
    • 2 エンジンインスタンス が上限になっているので 500スレッドくらいまでしかテストできず大体のケースで足りなさそうです
      • この制限を引き上げるにはSRを投げる必要があるとの記載があります
  • テスト抽出条件タブからテストが 成功 or 失敗 する条件を定義する
    • 応答時間, 1秒当たりの要求数, 要求, 待機時間, エラーが条件として指定できる
    • 現状国外リージョンにしかリソース作成できないので、応答時間とかはリージョンによる結果への影響がないか気になる ]
  • 監視タブからテスト中などにメトリックを監視したazureリソースの指定ができる
    • ここで指定すると、テスト中や後で結果を見返すときにダッシュボードまとまってくれるので見やすくなる

よい点

  • 負荷基盤のメンテナンスが不要になる
    • 負荷をかけるための基盤をつくる時間や工数を短縮できる
    • VMのパッチをあてたり、ログが増えてきたらローテートとか必要だったけど、その作業がマネージドされていてテスト部分にのみに集中できる
    • 規模によるが、VMを何台も待機させるような構成よりは価格も抑えられそう
  • テストごとのダッシュボードが簡単に作られる
    • VMやコンテナからCLIベースでテストしていると、直感的に結果を把握しずらい。まとめるためにあそこみてここみてってやってたのが集約されるのはうれしい。
  • CI/CID との統合するが簡単にできる(参考)
    • 各スプリントの最後に Staging 環境のリリース対象にロードテストするユースケースとか。
    • 使いこなせると品質があがりそうですね、やってみたい。
  • Jmeter を使っている人なら使用感が同じ。
    • 普段 Jmeter でテストを実施している人ならそのまま jmx ファイルをアップロードできる、移行の工数ほぼない。

注意する点

以下のあたりは少し注意が必要かなと感じました。

  • Jmeterの知識はある程度必須
    • 負荷テストの実行基盤だけをマネージしてくれる感じなので、シナリオを作成するまでの知識は必須になる
    • テスト結果画面のエラーとかは java 形式なので、トラシューに java 知識いるかも
  • プレビュー段階で、日本リージョンではリソース作成ができない
    • 国外からのテストになるのでパフォーマンスの計測結果に影響でないか気になる。特にクライアント側のメトリック。
  • jtl のログはダウンロードできるものの、おそらく詳細情報まで含めたログまではとれなさそう
    • csv 形式のダウンロードはできる。xml 形式のものはできなさそう。。。
    • エラーが出ているときの調査が少しつまりそう

まとめ

マネージドなサービスならではのうまみもあって今後使ってみたいサービスだと感じました。まだプレビュー段階なのでこれからのアップデートにも期待したいと思います。 今回はチュートリアル用のシナリオだったのですが、もう少し複雑なシナリオ等を動かして使用感をみてみたいです。特にファイルをアップロードしたりGroovyでの独自のロジックなんかを含むシナリオのときの結果の出方なんかを見てみたい気持ちがあります。