前回のAzure リレーは「【誰でもできる】Power BIで時系列データ予測 #Azureリレー」でした。
Azure の Marketplace が思いのほか便利そうで驚きました。
先日の一件以来、Webアプリの負荷テストについて興味深々なサトハルです。
今回は、2021年11月30日にパブリックプレビューが公開されたばかりの激アツコンテンツである「Azure Load Testing」について調べてみました。
1,Azure Load Testing とは
一言でいうと
JMeterをマネージドなインスタンスで実行できるサービス
です。
負荷テストを行うクライアントインスタンスを Azure がよしなに用意してくれるので、ユーザーはテスト内容の作成にフォーカスすることができます。
また、GitHub Actions か Azure Pipelines に紐づけてCI/CDに組み込むことができるのも特徴の一つです。
Azure Load Testing の課金体系は
月額基本使用料 + 仮想ユーザー時間課金
です。
仮想時間とは
(算定仮想ユーザー数 * 算定稼働時間 (分単位)) / 60 (分)
とのことです。
2,JMeter とは
2-a,概要
Apache が出しているWebアプリで使えるの負荷検証ツールです。
その名からわかるようにJavaで作られたツールなので実行にはJavaが必要になります。
このツール自体の歴史は古く、初版のリリースは2001年なようです(wikipedia)。
OSS なのでそれ自体にライセンス料などはかからないのが嬉しいですね。
2-b,テストの作成
JMeterでは .jmx 拡張子を持つテストの定義ファイルを用いてテストを実行します。
それは Azure Load Testing でも同様なので、どうにかして .jmx ファイルを作成する必要があります。
最も簡単なのは JMeter GUI を用いて作成する方法です。
スレッド数やループ回数等を指定できるほか、HTTPリクエスト等も細かく設定することができます。
また、出力される .jmx ファイルは普通にテキストファイルなので開いて直接編集することもできます。
Azure Load Testing のサンプルでもテキストファイルにコピペする形でテストを作成しています。
3,Azure Load Testing の詳細
3-a,試してみたい時には?
テスト用リソースも新たに立ててじっくり試してみたい場合にはMicrosoft の提供している パフォーマンスのボトルネックを特定する がおすすめです。
時間がない or 既存のサービスのテストをしたい場合には クイックスタート もいいと思います。
3-b,仮想ユーザー数の概念
仮想ユーザーは実行状況にもよりますが概ね
スレッド数 × Engine instances 数
になるようです。
スレッド数は jmxファイル上で定義される並列度で、Azure Load Testing では250以下にすることが推奨されています。
Engine instances というのはAzure Load Testing のパラメータの一つで、JMeter を実行するインスタンスの数になります。
Engine instances のパブリックプレビュー時点での最大値は45になります。
つまり現在は11,250人からの同時アクセスをシミュレーションするのが最大なようです。
また、総実行回数は
ループ回数 × Engine instances 数
になることにも注意してください。
まとめ
今回は Azure のインフラを用いてWebアプリの負荷テストが可能な Azure Load Testing について調べてみました。
大量にアクセスするとなると大量のマシンが必要になるのでそこをAzure に丸投げできるのは便利そうだなぁと思って調べ始めたのですが、それだけに留まらずに便利に使えそうな機能が山盛りになっていました。
今回ご紹介したのは Azure Load Testing の膨大な機能のほんの一部なので、これからさらに調査を進めていけたらと思います!
参考
クイックスタート: Azure Load Testing を使用してロード テストを作成して実行する | Microsoft Docs
チュートリアル: ロード テストを実行してパフォーマンスのボトルネックを特定する - Azure Load Testing | Microsoft Docs
高スケールのロード テスト向け Azure Load Testing を構成する - Azure Load Testing | Microsoft Docs