こんにちは!オルターブースのいけだです!
オルターブース アドベントカレンダー2024 9日目を担当します!
今回は、Azure Load Testing を活用して、ネットワーク制限下における負荷テストを実施してみます。 また、最後に2024年における Azure Load Testing の主なアップデートを振り返り、その進化を確認していこうと思います!💪
目次
ネットワーク制限のある対象への負荷テスト
一般的なシナリオとして、テスト対象のエンドポイントはファイアウォールの背後に配置されているか、仮想ネットワーク内からのみアクセス可能な状態にあることも多いかと思います。
今回は、パブリック IP アドレスを持ち、インターネット経由でアクセス可能なエンドポイントであるものの、エンドポイントへのアクセスは、特定の IP アドレス、仮想ネットワークに制限されている場合を想定します。以下ドキュメントに記載の 「アクセス制限を使用してパブリック エンドポイントをロードテストする」のシナリオに該当します。
事前準備
まず、App Service にテスト対象のアプリをデプロイします。こちらのチュートリアルで提供されているサンプルアプリを利用します。
デプロイをおこなうと、以下のようなアプリがデプロイされます。
デプロイ完了後にApp Serviceのネットワーク設定で特定のサブネットからのアクセスのみを許可するルールを追加することで、今回のシナリオに沿った負荷対象の環境構築は完了です。
Azure Load Testing
まず、Azure Load Testing用の仮想ネットワークとサブネットを作成しましょう。※サブネットはデフォルトで問題なし。
Azure Load Testingリソースの作成がまだであれば以下の手順に沿ってAzure Load Testingをデプロイしておきます。
負荷テストのトラフィックを固定のパブリック IP アドレス経由でルーティングするために、NAT ゲートウェイを作成します。また、テスト エンジンとなる仮想マシンに単一のIP アドレスではなく、IP アドレス範囲が割り当てられるよう、「パブリック IP プレフィックス」を設定します。
先に作成していた仮想ネットワークとサブネットを選択してNATゲートウェイの作成を完了させます。
さいごにApp Serviceのネットワーク設定に戻り、作成した仮想ネットワーク/サブネットからのアクセスを許可するようにを更新しておきましょう。
負荷テスト作成~実施
これで準備が整ったので、負荷テストを作成して実行してみましょう。
[テスト] の [作成] タブから 「URL ベースのテストを作成する」 を選択し、GET メソッドのリクエストを追加します。 ちなみに、今年度のアップデートにより、JMeter スクリプトを使用せずに、ポータル上でシンプルな HTTP リクエストは設定できるようになりました。
仮想ネットワーク統合
設定時の異なる点としては、以下のように仮想ネットワークとサブネットを選択するだけです。ここで選択した仮想ネットワークにテストエンジンとなる仮想マシンが接続されます。
「パブリック IP のデプロイの無効化」オプションがオフの場合、Azure Load Testing は選択した仮想ネットワークのリソース グループにパブリック IP アドレス、ロード バランサー、ネットワーク セキュリティ グループ (NSG) をデプロイします。
これらのリソースは、テスト エンジンの仮想マシンが Azure Load Testing サービスと通信し、テストの実行や結果の収集を行うために必要です。ただし、これらのリソースによる追加費用が発生する可能性があります。
一方、このオプションをオンにすることで、これらのリソースのデプロイがスキップされます。
その場合、選択したサブネットからの送信トラフィックを処理するために、Azure NAT ゲートウェイなどの代替手段を設定する必要があります。今回は事前にNATゲートウェイを配置しているため、このオプションをオンにしています。
テストの作成が完了した後、実行結果画面で、アクセス制限された対象エンドポイントへの負荷テストが正常に行われたことを確認できました。
さいごに - 2024年 アップデートを振り返る
それでは、さいごにAzure Load Testingの今年度のアップデートを振り返ってみましょう!
2024年1月
- アクセス制限付きのプライベート Azure Key Vaultでシークレットを取得することをサポート。
- Apache JMeter の Web Driver Sampler プラグインをサポート。
- JMeterスクリプトを使用せずに、Azureポータル上で直接HTTPリクエストを入力してテストを作成できる機能が公開。
- 負荷テストで最大 50 個のテスト失敗基準を指定できるように。
1月は、複数の機能強化が発表され、サービスの利便性が大幅に向上しました。特にJMeterスクリプトを使用せずにAzureポータル上でHTTPリクエストを作成できるようになったことは嬉しいですね。簡単なシナリオであればポータルだけで完結できるようになりました!
2024年4月
- Fairfax クラウド(米国バージニア州) 一般提供開始
- App Serviceとの統合が強化: Azure App Serviceのポータルから直接Azure Load Testingのテストを作成・実行できるようになり、負荷テストの設定が簡単になりました。
2024年5月
- 1 回のテスト実行でマルチリージョンでの負荷を同時にシミュレートできるように。
Pythonベースのオープンソース負荷テストツールであるLocustがサポートされ、ユーザーは既存のLocustスクリプトをAzure Load Testingで実行できるようになりました。※現時点ではプライベートプレビュー中
4月と5月のアップデートも充実していますね!Azure App Service との統合により、ポータル上での負荷テストの作成・実行が簡単になりました。また、マルチリージョン負荷テストの同時シミュレーションが可能になり、さらにさらに Locust のサポートが追加されました!(プライベートプレビュー中)Locust とは Python で構築されたオープンソースの負荷テストツールで、独自のテストシナリオを Python で記述できます。これは個人的にも非常に興味深いアップデートでした!
2024年7月
- 低スケールでのテスト実行が可能なデバッグモードが追加され、テストスクリプトのデバッグログや失敗したリクエストの詳細を確認できるようになりました。
- Azure ポータルの Azure Functions から直接、負荷テストを作成して実行できるようになりました。※現時点ではパブリックプレビュー中
2024年10月
- サーバーサイドのメトリックに基づいてテストの失敗条件を定義できる機能が公開。
今後のアップデート情報
- 複数のJMeterファイルのサポート
- JMeterスクリプトをモジュール化し、複数のファイルをアップロードしてテストを構成できる機能が今後提供予定。
- スケジューリングと通知機能
- ロードテストのスケジュール設定や、テスト完了・失敗時の通知を受け取る機能が今後提供予定。
今後のアップデートでは、複数のJMeterファイルをサポートすることでスクリプトのモジュール化が実現され、さらにスケジューリングや通知機能の追加により、負荷テスト実施時の運用効率が向上しそうですね!これらの進化によりAzure Load Testingの活用がますます楽しみになります!
本記事が、Azure Load Testing の最新情報や活用方法についての理解を深める一助となれば幸いです🙏 最後までお読みいただき、誠にありがとうございました。
サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com