次の方法で共有


Azure のロード テストとは

Azure Load Testing は、大規模な負荷を生成できるフル マネージド ロード テスト サービスです。 サービスは、アプリケーションがどこにホストされているかにかかわらず、そのトラフィックをシミュレートします。 開発者、テスト担当者、品質保証 (QA) エンジニアは、それを使って、アプリケーションのパフォーマンス、スケーラビリティ、または容量を最適化できます。

テスト ツールに関する知識がなくても、 URL を使用して Web アプリケーションのロード テストをすばやく作成できます。 ロード テストを大規模に実行するための複雑さとインフラストラクチャは、Azure Load Testing によって抽象化されます。

より高度なロード テスト シナリオでは、テスト スクリプトをアップロードしてロード テストを作成することもできます。 Azure Load Testing では、 Apache JMeter ベースのテスト または 子ベースのテストの実行がサポートされています。 たとえば、テスト計画が複数のアプリケーション要求から成る可能性がある、HTTP 以外のエンドポイントを呼び出す必要がある、テストをより動的に行うために入力データとパラメーターを使用している、などの場合です。

アプリケーションが Azure でホストされている場合、Azure Load Testing は詳細なリソース メトリックを収集して、Azure アプリケーション コンポーネント全体の パフォーマンスのボトルネックを特定 するのに役立ちます。

アプリケーション パフォーマンスの回帰を早期にキャプチャするには、 継続的インテグレーションと継続的デプロイ (CI/CD) ワークフローにロード テストを追加します。 テスト失敗条件を活用して、アプリケーションの品質要件を定義して検証します。

Azure Load Testing を使用すると、オンプレミスでホストするプライベート アプリケーション エンドポイントまたはアプリケーションをテストできます。 詳細については、 仮想ネットワークに Azure Load Testing をデプロイするシナリオを参照してください。

次の図は、Azure Load Testing のアーキテクチャの概要を示しています。

Azure Load Testing アーキテクチャを示す図。

概要イメージは、Azure Load Testing が Azure Monitor を使用してアプリ コンポーネントのメトリックをキャプチャする方法を示しています。 サポートされている Azure リソースの種類の詳細を確認します。

Azure Load Testing の主要な概念の詳細を確認します。

使用シナリオ

Azure Load Testing では、Apache JMeter またはリロート テスト フレームワークを使用でき、さまざまなアプリケーションの種類と通信プロトコルをサポートしています。 サポートされているアプリケーションまたはエンドポイントの種類の例を次に示します。

  • HTTP または HTTPS を使用する Web アプリケーション
  • REST API
  • JDBC 経由のデータベース
  • TCP ベースのエンドポイント

JMeter の場合、テスト スクリプトで JMeter プラグインを使用 して、より多くのアプリケーションの種類をロードできます。 リロートの場合は、 サードパーティの拡張機能、リロートプラグイン、またはその他のPythonライブラリを使用して、リロートの機能を拡張できます。

クイック テスト エクスペリエンスを使用すると、 単一の URL ベースの HTTP エンドポイントをテストできます。 JMeter スクリプトをアップロードすると、JMeter でサポートされているすべての通信プロトコルを使用できます。

Azure Load Testingは現在、Apache JMeterとLocustこれ以外のテストフレームワークをサポートしていません。

大規模なロード テストを使用してパフォーマンスのボトルネックを特定する

パフォーマンスの問題は、多くの場合、アプリケーションが負荷を受けるまで検出されません。 Azure portal で大規模なロード テストを開始して、負荷が高いアプリケーションの動作をより早く学習できます。 テストの実行中、Azure Load Testing ダッシュボードには、クライアントとサーバー側のメトリックのライブ更新が表示されます。

ロード テストが完了したら、ダッシュボードを使用してテスト結果を分析し、パフォーマンスのボトルネックを特定できます。 Azure でホストされるアプリケーションの場合、ダッシュボードには Azure アプリケーション コンポーネントの詳細なリソース メトリックが表示されます。 Azure でホストされるアプリケーションのパフォーマンスのボトルネックを特定するためのチュートリアルを開始します。

Azure Load Testing では、テスト実行の履歴が保持され、複数の 実行 を視覚的に比較して、時間の経過に伴うパフォーマンスの低下を検出できます。

サード パーティ製ツールで分析用 のテスト結果をダウンロード することもできます。

自動ロード テストを有効にする

開発ライフサイクル中に意味のあるポイントで、CI/CD パイプラインに Azure Load Testing を統合できます。 たとえば、各スプリントの最後またはステージング環境でロード テストを自動的に実行して、リリース候補のビルドを検証できます。

読み込み中のアプリケーションのパフォーマンス低下をすばやく特定するために、 CI/CD ワークフローにロード テストを追加 する作業を開始します。

テスト構成で、テスト の失敗条件を指定 して、開発サイクルの早い段階でアプリケーションのパフォーマンスまたは安定性の回帰をキャッチします。 たとえば、平均応答時間またはエラー数が特定のしきい値を超えたときにアラートを受け取ります。

Azure Load Testing では、特定のエラー状態に応じて自動ロード テストが自動的に停止されます。 または、Apache JMeter スクリプトで AutoStop リスナーを使用することもできます。 自動的に停止することで、エンドポイント URL が正しく構成されていないなど、テストの失敗でさらにコストが発生することを防ぎます。 ロード テストの自動停止を構成する方法について説明します。

Azure Pipelines または GitHub Actions ワークフローから Azure Load Testing をトリガーすることも、Azure CLI を使用して他の CI ツールと統合することもできます。

Azure Load Testing のしくみ

Azure Load Testing では、ロード テストを実行するために Apache JMeter または中子が使用されます。 https://jmeter-plugins.orgから Apache JMeter プラグインを使用することも、独自のプラグイン コードをアップロードすることもできます。 Azure Load Testing では、JMeter でサポートされるすべての通信プロトコルがサポートされています。 たとえば、Azure Load Testing を使用して、データベース接続またはメッセージ キューをロード テストします。 サポートされている Apache JMeter 機能の詳細を確認します。

Azure Load Testing テスト エンジンは、 大規模なロード テストを実行するために必要なインフラストラクチャを抽象化します。 各テスト エンジン インスタンスは、テスト スクリプトを実行して、アプリケーション エンドポイントに同時にアクセスする多数の仮想ユーザーをシミュレートします。 URL (クイック テスト) に基づいてロード テストを作成すると、Azure Load Testing によってテスト スクリプトが自動的に生成されます。 ロード テストをスケールアウトするには、テスト エンジンの数を構成します。

アプリケーションは、Azure、オンプレミス、またはその他のクラウドの任意の場所でホストできます。 パブリック エンドポイントのないサービスのロード テストを実行するには、 仮想ネットワークに Azure Load Testing をデプロイします。

ロード テスト中、Azure Load Testing は次のリソース メトリックを収集し、ダッシュボードに表示します。

  • クライアント側のメトリック は、テスト エンジンによって報告された詳細を提供します。 これらの詳細には、仮想ユーザーの数、要求の応答時間、または 1 秒あたりの要求数が含まれます。

  • サーバー側のメトリックは、 Azure アプリケーション コンポーネントに関する情報を提供します。 Azure Load Testing は、Application Insights や Container insights を含む Azure Monitor と統合し、Azure サービスからの詳細を取得します。 サービスの種類によって、さまざまな指標が利用可能です。 次のような例があります。メトリクスはデータベース読み取り回数、HTTP応答のタイプ、またはコンテナのリソース消費量を示します。

Azure Load Testing には、テストが安全かつ確実に実行されるように、Azure ネットワークのベスト プラクティスが自動的に組み込まれています。 アプリケーション エンドポイントまたは Azure コンポーネントが要求の調整を開始すると、ロード テストは自動的に停止されます。

サービスは、ロード テスト リソースに格納されているすべてのデータを、Microsoft によって管理されるキー (サービスマネージド キー) で自動的に暗号化します。 たとえば、このデータには、Apache JMeter または Chaost テスト スクリプト、構成ファイルなどが含まれます。 または、 カスタマー マネージド キーを使用するようにサービスを構成することもできます。

リージョン内のデータ所在地

Azure Load Testing では、サービス インスタンスをデプロイするリージョンの外部に顧客データが格納または処理されることはありません。

Azure Load Testing の使用を開始します。