Slide 1

Slide 1 text

Azure Load Testingを利用した パフォーマンステスト 2021/01/20 – 第35回 JAZUG Night 株式会社 pnop / Cloudlive 株式会社 浅見 城輝

Slide 2

Slide 2 text

♥BEER About me kuniteru.asami Find me Database Microsoft Azure 2012~ Microsoft Azure

Slide 3

Slide 3 text

注意事項 このスライドは 2022 年 1 月 20 日 時点の情報を 基にしています 現在 Azure Load Testing は Public Preview です 本コンテンツ内で記載されていることは、 今後、変更されることが予想されます

Slide 4

Slide 4 text

Agenda Azure Load Testing とは TIPS & TRICKS

Slide 5

Slide 5 text

Azure Load Testing とは

Slide 6

Slide 6 text

フルマネージドな 負荷テスト / 性能測定 サービス

Slide 7

Slide 7 text

特徴 大規模な負荷をすばやく簡単に生成 クライアントと Azure リソースの メトリックの包括的なビュー DevOps ワークフローへの組み込み エンジンは Apache JMeter™ (JMeter のテストプラン ファイルを利用)

Slide 8

Slide 8 text

o 大規模な負荷をすばやく簡単に生成 指定した数のテストエンジン インスタンスから テスト対象に対するリクエストを生成する 1インスタンスあたり 250 スレッド (目安) 最大 45 インスタンス (Preview 時) 合計 11,250 スレッド

Slide 9

Slide 9 text

クライアントとAzureリソースのメトリックビュー Client-side metrics クライアント(JMeter)側のメトリック Server-side metrics 任意の Azure リソースのメトリック テスト結果の比較 2 つのテスト結果のグラフを 重ねて表示

Slide 10

Slide 10 text

DevOpsワークフローへの組み込み Azure DevOps の Pipeline や GitHub Actions のワークフローから Azure Load Testing でテストを実施 「平均レスポンスタイム」と「エラー率」によって、 テストの合格/不合格を判定 Azure DevOps や GitHub Actions で 設定した環境変数を Azure Load Testing の テストスクリプトで利用できる

Slide 11

Slide 11 text

エンジンは Apache JMeter™ Apache JMeter™ で作成したテスト スクリプトを Azure Load Testing にアップロードしてテストを実施する テスト スクリプトを作成/変更する機能は Azure Load Testing にはないの で、自身で構築した JMeter で行う つまりは、JMeter のノウハウが利用できる (テスト スクリプトのスレッドグループで指定したスレッド数) x (テストの Load configuration で Engine instances の値) がスレッド数になる

Slide 12

Slide 12 text

JMeter 分散テスト環境の課題と Azure Load Testing を利用するメリット 課題 自身で JMeter の分散テスト環境を構築する Azure Load Testing 何台のマシンを用意するか? 事前に見積もる必要があり、正しい見積もりが 難しい 不足しても追加が容易なので、厳密な見積もりは 不要 用意したマシンでは足りなかったら? 追加で調達する必要があり時間がかかる 先に用意していたものと同じスペックのものが用意 できるか? 即時に解決 テスト終了後のマシンの活用 適切な利用方法を検討しておく (テストを継続し続けるのもあり) 考慮する必要がない マシンコスト 購入あるいはリースなど わずかな基本料金 + 使用量に応じた従量課金 セットアップの手間 用意したすべてのマシンに対してセットアップをす る必要がある マシン数が多ければ多いほど大変 事 前 準 備 も 不 要 で 、 単 純 な テ ス ト で あ れ ば 数分でセットアップが完了する 長期間環境を維持する場合の保守 全てのマシンをアップデートしていく必要がある マシン数が多ければ多いほど大変 考慮する必要がない サーバーへの テストパラメーターファイルの配布 全てのサーバーのディスクにコピーするのが面倒 全 て の サ ー バ ー に 展 開 す る 仕 組 み が 提供されている

Slide 13

Slide 13 text

TIPS & TRICKS

Slide 14

Slide 14 text

オフィシャルドキュメントのテスト スクリプト オフィシャルドキュメントのクイックスタートやチュートリアルなどで提示され ているテスト スクリプトが、通常の 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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

テスト結果のエクスポート テスト結果をダウンロードして、Report Dashboard の参照や JMeter の Listener でテスト結果を参照することができる JMeter の Listener では ダウンロードしたテスト結果に含まれる testreport.csv ファイルを読み込む

Slide 18

Slide 18 text

制限 インターネットに対して公開されているサービスに対してのみテストを実施でき る 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™ を用意する

Slide 19

Slide 19 text

制限を超えたテストをしたいときは 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 リソースの包括的なビューを作成 できる

Slide 20

Slide 20 text

参考ドキュメント Azure Load Testing documentation https://docs.microsoft.com/en-us/azure/load-testing/ Apache JMeter https://jmeter.apache.org/

Slide 21

Slide 21 text

まとめ Azure Load Testing は、Apache JMeter™ で実装された フルマネージドな負荷テストサービス 大規模な負荷の作成が容易 Azure DevOps / GitHub Actions から利用しやすい わずかな基本料金 + 使用料に応じたの従量課金

Slide 22

Slide 22 text

pnop 社 Microsoft Azure プロフェッショナルサービス 23 コンサルティング 技術検証 性能検証 PoC, アセスメント テクニカルライティング 講師 / セミナー登壇 開発 環境構築 サポート トラブルシューティング パフォーマンス チューニング 移行 / ポーティング オンプレミス → Azure Linux → Windows 他DB → Azure SQL DB 営業支援 見積支援 【お問い合わせ】株式会社 pnop Azure営業部 sales@pnop.co.jp

Slide 23

Slide 23 text

http://www.pnop.co.jp/