Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

Azure Load Testing ネットワーク制限下での負荷テスト & 2024 アップデート振り返り!

こんにちは!オルターブースのいけだです!

オルターブース アドベントカレンダー2024 9日目を担当します!

adventar.org

今回は、Azure Load Testing を活用して、ネットワーク制限下における負荷テストを実施してみます。 また、最後に2024年における Azure Load Testing の主なアップデートを振り返り、その進化を確認していこうと思います!💪

learn.microsoft.com

目次

ネットワーク制限のある対象への負荷テスト

一般的なシナリオとして、テスト対象のエンドポイントはファイアウォールの背後に配置されているか、仮想ネットワーク内からのみアクセス可能な状態にあることも多いかと思います。

今回は、パブリック IP アドレスを持ち、インターネット経由でアクセス可能なエンドポイントであるものの、エンドポイントへのアクセスは、特定の IP アドレス、仮想ネットワークに制限されている場合を想定します。以下ドキュメントに記載の 「アクセス制限を使用してパブリック エンドポイントをロードテストする」のシナリオに該当します。

learn.microsoft.com

事前準備

まず、App Service にテスト対象のアプリをデプロイします。こちらのチュートリアルで提供されているサンプルアプリを利用します。

デプロイをおこなうと、以下のようなアプリがデプロイされます。

デプロイ完了後にApp Serviceのネットワーク設定で特定のサブネットからのアクセスのみを許可するルールを追加することで、今回のシナリオに沿った負荷対象の環境構築は完了です。

Azure Load Testing

まず、Azure Load Testing用の仮想ネットワークとサブネットを作成しましょう。※サブネットはデフォルトで問題なし。

learn.microsoft.com

Azure Load Testingリソースの作成がまだであれば以下の手順に沿ってAzure Load Testingをデプロイしておきます。

learn.microsoft.com

負荷テストのトラフィックを固定のパブリック IP アドレス経由でルーティングするために、NAT ゲートウェイを作成します。また、テスト エンジンとなる仮想マシンに単一のIP アドレスではなく、IP アドレス範囲が割り当てられるよう、「パブリック IP プレフィックス」を設定します。

先に作成していた仮想ネットワークとサブネットを選択してNATゲートウェイの作成を完了させます。

さいごにApp Serviceのネットワーク設定に戻り、作成した仮想ネットワーク/サブネットからのアクセスを許可するようにを更新しておきましょう。

負荷テスト作成~実施

これで準備が整ったので、負荷テストを作成して実行してみましょう。

learn.microsoft.com

[テスト] の [作成] タブから 「URL ベースのテストを作成する」 を選択し、GET メソッドのリクエストを追加します。 ちなみに、今年度のアップデートにより、JMeter スクリプトを使用せずに、ポータル上でシンプルな HTTP リクエストは設定できるようになりました。

仮想ネットワーク統合

設定時の異なる点としては、以下のように仮想ネットワークとサブネットを選択するだけです。ここで選択した仮想ネットワークにテストエンジンとなる仮想マシンが接続されます。

「パブリック IP のデプロイの無効化」オプションがオフの場合、Azure Load Testing は選択した仮想ネットワークのリソース グループにパブリック IP アドレス、ロード バランサー、ネットワーク セキュリティ グループ (NSG) をデプロイします。

これらのリソースは、テスト エンジンの仮想マシンが Azure Load Testing サービスと通信し、テストの実行や結果の収集を行うために必要です。ただし、これらのリソースによる追加費用が発生する可能性があります。

以下ドキュメントに記載のある概要図

一方、このオプションをオンにすることで、これらのリソースのデプロイがスキップされます。

その場合、選択したサブネットからの送信トラフィックを処理するために、Azure NAT ゲートウェイなどの代替手段を設定する必要があります。今回は事前にNATゲートウェイを配置しているため、このオプションをオンにしています。

テストの作成が完了した後、実行結果画面で、アクセス制限された対象エンドポイントへの負荷テストが正常に行われたことを確認できました。

さいごに - 2024年 アップデートを振り返る

それでは、さいごにAzure Load Testingの今年度のアップデートを振り返ってみましょう!

2024年1月

1月は、複数の機能強化が発表され、サービスの利便性が大幅に向上しました。特にJMeterスクリプトを使用せずにAzureポータル上でHTTPリクエストを作成できるようになったことは嬉しいですね。簡単なシナリオであればポータルだけで完結できるようになりました!

2024年4月

2024年5月

  • 1 回のテスト実行でマルチリージョンでの負荷を同時にシミュレートできるように。
  • Pythonベースのオープンソース負荷テストツールであるLocustがサポートされ、ユーザーは既存のLocustスクリプトをAzure Load Testingで実行できるようになりました。※現時点ではプライベートプレビュー中

    techcommunity.microsoft.com

4月と5月のアップデートも充実していますね!Azure App Service との統合により、ポータル上での負荷テストの作成・実行が簡単になりました。また、マルチリージョン負荷テストの同時シミュレーションが可能になり、さらにさらに Locust のサポートが追加されました!(プライベートプレビュー中)Locust とは Python で構築されたオープンソースの負荷テストツールで、独自のテストシナリオを Python で記述できます。これは個人的にも非常に興味深いアップデートでした!

2024年7月

2024年10月

今後のアップデート情報

  • 複数のJMeterファイルのサポート
    • JMeterスクリプトをモジュール化し、複数のファイルをアップロードしてテストを構成できる機能が今後提供予定。
  • スケジューリングと通知機能
    • ロードテストのスケジュール設定や、テスト完了・失敗時の通知を受け取る機能が今後提供予定。

    techcommunity.microsoft.com

今後のアップデートでは、複数のJMeterファイルをサポートすることでスクリプトのモジュール化が実現され、さらにスケジューリングや通知機能の追加により、負荷テスト実施時の運用効率が向上しそうですね!これらの進化によりAzure Load Testingの活用がますます楽しみになります!

本記事が、Azure Load Testing の最新情報や活用方法についての理解を深める一助となれば幸いです🙏 最後までお読みいただき、誠にありがとうございました。


サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com