Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure Load Testingを利用したパフォーマンステスト

Azure Load Testingを利用したパフォーマンステスト

2021/01/20 - 第35回 JAZUG Night
先日Public PreviewとしてリリースされたAzure Load Testingの紹介です

Kuniteru Asami

January 20, 2022
Tweet

More Decks by Kuniteru Asami

Other Decks in Technology

Transcript

  1. 注意事項 このスライドは 2022 年 1 月 20 日 時点の情報を 基にしています

    現在 Azure Load Testing は Public Preview です 本コンテンツ内で記載されていることは、 今後、変更されることが予想されます
  2. DevOpsワークフローへの組み込み Azure DevOps の Pipeline や GitHub Actions のワークフローから Azure

    Load Testing でテストを実施 「平均レスポンスタイム」と「エラー率」によって、 テストの合格/不合格を判定 Azure DevOps や GitHub Actions で 設定した環境変数を Azure Load Testing の テストスクリプトで利用できる
  3. エンジンは Apache JMeter™ Apache JMeter™ で作成したテスト スクリプトを Azure Load Testing

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

    Azure Load Testing 何台のマシンを用意するか? 事前に見積もる必要があり、正しい見積もりが 難しい 不足しても追加が容易なので、厳密な見積もりは 不要 用意したマシンでは足りなかったら? 追加で調達する必要があり時間がかかる 先に用意していたものと同じスペックのものが用意 できるか? 即時に解決 テスト終了後のマシンの活用 適切な利用方法を検討しておく (テストを継続し続けるのもあり) 考慮する必要がない マシンコスト 購入あるいはリースなど わずかな基本料金 + 使用量に応じた従量課金 セットアップの手間 用意したすべてのマシンに対してセットアップをす る必要がある マシン数が多ければ多いほど大変 事 前 準 備 も 不 要 で 、 単 純 な テ ス ト で あ れ ば 数分でセットアップが完了する 長期間環境を維持する場合の保守 全てのマシンをアップデートしていく必要がある マシン数が多ければ多いほど大変 考慮する必要がない サーバーへの テストパラメーターファイルの配布 全てのサーバーのディスクにコピーするのが面倒 全 て の サ ー バ ー に 展 開 す る 仕 組 み が 提供されている
  5. オフィシャルドキュメントのテスト スクリプト オフィシャルドキュメントのクイックスタートやチュートリアルなどで提示され ているテスト スクリプトが、通常の 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
  6. 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
  7. 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
  8. 制限 インターネットに対して公開されているサービスに対してのみテストを実施でき る 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™ を用意する
  9. 制限を超えたテストをしたいときは 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 リソースの包括的なビューを作成 できる
  10. まとめ Azure Load Testing は、Apache JMeter™ で実装された フルマネージドな負荷テストサービス 大規模な負荷の作成が容易 Azure

    DevOps / GitHub Actions から利用しやすい わずかな基本料金 + 使用料に応じたの従量課金
  11. pnop 社 Microsoft Azure プロフェッショナルサービス 23 コンサルティング 技術検証 性能検証 PoC,

    アセスメント テクニカルライティング 講師 / セミナー登壇 開発 環境構築 サポート トラブルシューティング パフォーマンス チューニング 移行 / ポーティング オンプレミス → Azure Linux → Windows 他DB → Azure SQL DB 営業支援 見積支援 【お問い合わせ】株式会社 pnop Azure営業部 [email protected]