Azure Load Testingを使ってみた。

こんにちは。 AZPower 森です。

今日はAzure Load Testingというサービスをご紹介したいと思います。

Microsoftの負荷テストツールといえば、Visual StudioによるクラウドベースロードテストAzure DevOpsのクラウドベースロードテストなどがありましたが、いずれも2020年3月31日で廃止になりました。

これらのサービスの代わりなのかはわかりませんが、Azure Load TestingというサービスがPreview公開されています。

こちらはフルマネージドの負荷テストツールになっていて、Apache JMeter Scriptを使って複数インスタンスによる負荷テストを実行できるサービスになっています。
JMeter Scriptなので公開されているエンドポイント・リソースであればAzureサービスに限らず利用できます。
Azure DevOpsのCI/CDの中にも組み込めんで回帰的に負荷テストを実施することも可能です。

サービスは現在Previewで、Australia East, East US, East US2, North Europe, South Central USの5つのリージョンで利用できます。

Azure Load Testing

こちらは

価格

現在価格は以下のようになっています。

料金
ロードテストリソース 1か月あたり50仮想ユーザー時間が含まれていて1.149.350円
1仮想ユーザー時間の追加使用料 9,950時間までは追加時間1時間あたり17.241円
9,950時間以上は追加時間1時間あたり8.621円

利用方法

リソースの作成

ポータルから作成

Azure Portalからリソースの作成で「Load Testing」を選択します。

Azure PortalからLoad Testingを作成

ロードテストリソースの作成

ロードテストの名前をワールドワイドで一意となるよう命名します。
作成できるリージョンは前述のとおり現時点で5リージョンとなります。

ロードテストリソースの作成

IAMから権限の付与

負荷テストを行うためにはサブスクリプションの「所有者」権限だけでは実行できません。
作成したロードテストのアクセス制御から「ロードテスト共同作成者」権限を付与する必要があります。

権限の付与

負荷テストの実施

負荷テスト用スクリプトの作成

負荷テスト用のスクリプトはJMeterで作成ができます。
ローカルで実行したJMeterで負荷テスト用のスクリプトを作成します。
実行する負荷テストを作成、スクリプトの保存を行い
ただし、JDBCドライバーなどが導入されていないのでデータベースなどの作成は行えません。
また、プラグインなども限定的で追加導入できないので、複雑な負荷テストなどはまだ難しそうな印象です。

JMeter

テストの作成

Azure Load Testingのポータル画面に戻り、テストの作成を行います。
テストの作成はメニューの[Tests]にある[Tests]を選択し、[Create Test]をクリックします。

テストの作成

Basics

最初にテスト名とテストに関する簡単な説明を入力できます。
Run test after creationをチェックするとテスト作成直後にテストを実行します。

Basics

Test plan

先ほど作成したJMeterスクリプトはここでアップロードします。
ファイルを選択後、Uploadボタンのクリックを行うとスクリプトがアップロードされます。
ほかにも使用するデータやConfigrationファイルなど、テストで使用するファイルはこちらでアップロードします。

Test Plan

Parameters

テスト内で使用する環境変数やシークレットなどのパラメーターはこちらで指定します。

Parameters

Load

テストで実行する負荷に関する情報設定画面です。

こちらでは、テストで使用するエンジンのインスタンス数を指定できます。

現在は1インスタンスあたり最大250スレッドの負荷を実行できます。
また、インスタンスは現時点で最大45インスタンスまで増やすことが可能です。

Load

Test criteria

こちらでは実施するテストの合格基準を設定します。
負荷テストではいくつかのメトリックを監視することができて、そのメトリックがどのような値となれば合格とするかの設定を行います。
各項目は以下のような意味になります。

フィールド 説明
Client metric チェック対象となるメトリック
Aggregate function メトリックに適用する集計関数
Condition 比較演算子
Threshold 基準となる値

Test criteria

なお、現在、Test criteriaに使用できるメトリックは以下になります。

Test criteriaに使用できるメトリック

Monitoring

監視対象のリソースを指定し、Load Testingに統合します。

Monitoring

実行

ロードテストが実行されるとダッシュボードからサーバーメトリックの表示が行われます。
テスト実行中にはさまざまなメトリックが5秒毎に更新されます。

実行

Wrapup

このようにAzure Load Testingでは、負荷テストのデファクトスタンダートとも言えるJMeterのスクリプトを使用して、簡単な手順で負荷テストが行えるサービスになっています。

大規模な負荷テストを実施したい場合などには、非常に簡単な手順でリソース設定できるので是非活用してみてください。

参考)Azure ロードテストのドキュメント