Share
Embed
Azure Load Testingを利用したパフォーマンステスト
2021/01/20 - 第35回 JAZUG Night
先日Public PreviewとしてリリースされたAzure Load Testingの紹介です
Kuniteru Asami
January 20, 2022
Transcript
23 slides
-
Azure Load Testingを利用した パフォーマンステスト 2021/01/20 – 第35回 JAZUG Night 株式会社
pnop / Cloudlive 株式会社 浅見 城輝 -
注意事項 このスライドは 2022 年 1 月 20 日 時点の情報を 基にしています
現在 Azure Load Testing は Public Preview です 本コンテンツ内で記載されていることは、 今後、変更されることが予想されます -
特徴 大規模な負荷をすばやく簡単に生成 クライアントと Azure リソースの メトリックの包括的なビュー DevOps ワークフローへの組み込み エンジンは Apache
JMeter™ (JMeter のテストプラン ファイルを利用) -
o 大規模な負荷をすばやく簡単に生成 指定した数のテストエンジン インスタンスから テスト対象に対するリクエストを生成する 1インスタンスあたり 250 スレッド (目安) 最大
45 インスタンス (Preview 時) 合計 11,250 スレッド -
DevOpsワークフローへの組み込み Azure DevOps の Pipeline や GitHub Actions のワークフローから Azure
Load Testing でテストを実施 「平均レスポンスタイム」と「エラー率」によって、 テストの合格/不合格を判定 Azure DevOps や GitHub Actions で 設定した環境変数を Azure Load Testing の テストスクリプトで利用できる -
エンジンは Apache JMeter™ Apache JMeter™ で作成したテスト スクリプトを Azure Load Testing
にアップロードしてテストを実施する テスト スクリプトを作成/変更する機能は Azure Load Testing にはないの で、自身で構築した JMeter で行う つまりは、JMeter のノウハウが利用できる (テスト スクリプトのスレッドグループで指定したスレッド数) x (テストの Load configuration で Engine instances の値) がスレッド数になる -
JMeter 分散テスト環境の課題と Azure Load Testing を利用するメリット 課題 自身で JMeter の分散テスト環境を構築する
Azure Load Testing 何台のマシンを用意するか? 事前に見積もる必要があり、正しい見積もりが 難しい 不足しても追加が容易なので、厳密な見積もりは 不要 用意したマシンでは足りなかったら? 追加で調達する必要があり時間がかかる 先に用意していたものと同じスペックのものが用意 できるか? 即時に解決 テスト終了後のマシンの活用 適切な利用方法を検討しておく (テストを継続し続けるのもあり) 考慮する必要がない マシンコスト 購入あるいはリースなど わずかな基本料金 + 使用量に応じた従量課金 セットアップの手間 用意したすべてのマシンに対してセットアップをす る必要がある マシン数が多ければ多いほど大変 事 前 準 備 も 不 要 で 、 単 純 な テ ス ト で あ れ ば 数分でセットアップが完了する 長期間環境を維持する場合の保守 全てのマシンをアップデートしていく必要がある マシン数が多ければ多いほど大変 考慮する必要がない サーバーへの テストパラメーターファイルの配布 全てのサーバーのディスクにコピーするのが面倒 全 て の サ ー バ ー に 展 開 す る 仕 組 み が 提供されている -
オフィシャルドキュメントのテスト スクリプト オフィシャルドキュメントのクイックスタートやチュートリアルなどで提示され ているテスト スクリプトが、通常の JMeter で読み込みエラーになる JMeter で読み込みエラーになるテスト スクリプトの例
「クイックスタート: Azure Load Testing を使用してロード テストを作成して実行する」 https://docs.microsoft.com/ja-jp/azure/load-testing/quickstart-create-and-run-load-test#jmeter 「チュートリアル: ロード テストを実行してパフォーマンスのボトルネックを特定する」 https://docs.microsoft.com/ja-jp/azure/load-testing/tutorial-identify-bottlenecks-azure-portal#deploy-the-sample-app https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck/blob/main/SampleApp.jmx https://github.com/Azure-Samples/nodejs-appsvc-cosmosdb-bottleneck/blob/main/SampleApp_Secrets.jmx 標準の JMeter では導入されていないプラグインが利用されているため JMeter に Plugins Manager をインストールしておくことで、テストスクリプトに必要な JMeter プラグインを判断して導入してくれる https://jmeter-plugins.org テスト スクリプトが利用しているプラグインがインストールされていなくても plugins-jmeter.jar (jmeter-plugins-manager-*.*.jar) がインストールされていればOK -
CSV ファイルの利用 CSV などのテストデータ ファイルを利用するには テスト スクリプトでは設定エレメント (Config Element) の
CSV Data Set Config などでテストデータ ファイルのファイル名だけを指定 Azure Load Testing ではテスト設定の Test Plan で対象のファイルをアップ ロードする https://docs.microsoft.com/en-us/azure/load-testing/how-to-read-csv-data -
Azure Key Vault からシークレットを取得する GetSecret カスタム関数 Parameterize load tests with
secrets and environment variables https://docs.microsoft.com/ja-jp/azure/load-testing/how-to-parameterize- load-tests#secrets 設定エレメントのユーザー定義変数 (Config Element > User Defined Variables) で取得すること JMeter で GetSecret 関数を使えるようにするプラグイン https://github.com/pnopjp/jmeter-plugins/blob/master/docs/azure-load- testing-stub.md -
テスト結果のエクスポート テスト結果をダウンロードして、Report Dashboard の参照や JMeter の Listener でテスト結果を参照することができる JMeter の
Listener では ダウンロードしたテスト結果に含まれる testreport.csv ファイルを読み込む -
制限 インターネットに対して公開されているサービスに対してのみテストを実施でき る Azure Virtual Network 内の Virtual Machines や
VNet 内からの接続のみを許可している Azure PaaS 等はテスト対象にできない すべてのプラグインが利用できるわけではない jmeter-plugins.org から提供されているものは使えるものもある 任意の Java ライブラリが利用できない SQL Server の JDBC Driver などを追加できないため、Azure SQL Database へのテストなどがで きない テストの合格/不合格の判定が柔軟ではない 「平均レスポンスタイム」と「エラー率」のみ 最大 11,250 スレッドが目安 (45 インスタンス x 250 スレッド) テストスクリプトの作成には、別途 Apache JMeter™ を用意する -
制限を超えたテストをしたいときは Azure Marketplace で弊社が提供している Load Tester (multiple remote servers) Powered
by Apache JMeter™ を利用する https://bit.ly/jmeter-azure Azure 上に複数の JMeter 導入済み(連携済み)の仮想マシンが展開される Azure 仮想マシン(または仮想マシンスケールセット)なので、 任意の VNet に所属し、VNet 内通信でテスト対象にアクセスも可能 任意の JMeter プラグインや Java ライブラリを導入可能 (複数サーバーへの展開も容易) Azure DevOps や GitHub Actions からの、テスト合否判定を柔軟に設定可能 (ただし設定はやや複雑) スレッド数を大きくするため、多くの大きな仮想マシンを構築可能 Azure Monitor などを利用してクライアントと Azure リソースの包括的なビューを作成 できる -
まとめ Azure Load Testing は、Apache JMeter™ で実装された フルマネージドな負荷テストサービス 大規模な負荷の作成が容易 Azure
DevOps / GitHub Actions から利用しやすい わずかな基本料金 + 使用料に応じたの従量課金 -
pnop 社 Microsoft Azure プロフェッショナルサービス 23 コンサルティング 技術検証 性能検証 PoC,
アセスメント テクニカルライティング 講師 / セミナー登壇 開発 環境構築 サポート トラブルシューティング パフォーマンス チューニング 移行 / ポーティング オンプレミス → Azure Linux → Windows 他DB → Azure SQL DB 営業支援 見積支援 【お問い合わせ】株式会社 pnop Azure営業部 [email protected]