ページを選択

あなたはOrkutのようなソーシャルネットワーキングアプリケーションであなたの友人とチャットし(はい、それを覚えていますか?)、リアルタイムでメッセージを送受信できることに夢中になっていると感じた初期の経験を覚えていますか? Gmail、Slack、WhatsApp、Shazam、Instagram、そして無数の他のアプリケーションを使用する今まで早送りしてください。 私たちは本当にほんの数年でリアルタイムウェブの台頭を目撃してきました。 これが可能であった最大の理由の1つは、主にWebSocketプロトコルの導入によるものです。 WebSocket とは何か、その機能、利点、ストレスの下で全体的なパフォーマンスを理解するために WebSocket を使用するアプリケーションや ウェブ サイトにストレスを与える方法、およびそれがユーザー エクスペリエンスにどのような影響を与えるかについて説明し、理解してみましょう。

 

ウェブソケットとは何ですか?

定義上、WebSocket は単一の TCP を介した双方向のコンピュータ通信プロトコルです。 WebSockets は、クライアントとサーバー間の高スケールのデータ転送を処理するのに非常に役立ちます。 WebSocket は、クライアントとサーバーの間の接続を常に開いたままにすることで動作するため、異なります。 この方法を使用すると、サーバーは、クライアントによって開始されなかった場合でも、いつでも情報を送信する権限を持っています。 クライアントはサーバーに対して通常の HTTP 要求を行うことができますが、WebSockets はクライアントとサーバーの間で通信用のメディアをオープンします。 Nginx、Apache、Windows サーバーなどの ウェブ サーバーは、クロム、エッジ、インターネット エクスプローラ、Firefox、Safari などの一般的なブラウザーと同様に、WebSockets プロトコルをサポートしています。

 

ウェブ ソケットはどこで使用されますか?

WebSocket は、次のようなリアルタイム通信が必要な状況に適しています。

  • オンラインマルチプレイヤーゲーム
  • チャット アプリケーション
  • モノのインターネット
  • リアルタイムアプリケーション
  • スポーツスコア/ティッカー

 

ウェブソケットのメリットとメリット

  • クライアントとサーバー間の継続的な接続: クライアントが要求しなくても、いつでもクライアントに情報を送信することが可能です。
  • 全二重通信: どちらの方法でも、クライアントとサーバーの両方が接続されている場合でも、通信を開始できます。
  • 低遅延: HTTPヘッダーやクッキーなどのオーバーヘッドが非常に限られているため、データ転送の速度がシームレスで高速になります。
  • HTTP ポーリング これは、クライアントが最新の情報をサーバーにポーリングし続けるのに役立ちます。 ポーリングは、今日の膨大な数のアプリケーションで使用され、ほとんどの場合、RESTful プラクティスに使用されます。

 

ウェブソケットの欠点

  • ウェブ ソケットは、HTTP よりも複雑に使用できます。 Telnet との HTTP 接続を確立することはできますが、WebSocket では同じ操作はできません。
  • WebSocket を使用した負荷分散とプロキシのセットアップはできません。
  • 接続間のドロップの間に、再接続処理は WebSockets に存在しません。

 

WebSocket を使用するパフォーマンス テスト アプリケーション

これまでに説明したように、WebSockets は、チャット アプリケーションや ウェブ サイト上でリアルタイムコンテンツを配信するニュース フィードをサポートしていますが、適切に実装すれば全体的なユーザー エクスペリエンスに影響を与える可能性のあるパフォーマンスの問題を抱えている可能性があります。 これを保護するために、パフォーマンスの問題、ボトルネック、または劣化の問題を見つけるために、当社のウェブ サイトまたはアプリケーションで負荷テストとストレステストを実行するのが賢明です。 多数の同時ユーザーに対してアプリケーションを作成すると、ユーザーが何を経験するかの良いアイデアを得ることができます。

 

EveryStep Web レコーダーを使用した LoadView によるパフォーマンス テスト

EveryStep Web Recorderでは、ブラウズ中にスクリーンレコーダーオプションが提供され、ウェブ サイトやアプリケーションとのクライアント側の対話をシミュレートするのに役立ちます。 HTML5、Java、Ruby、React、Vue、Angular、ノックアウトなどの動的なウェブ アプリケーションを作成するために使用されるフレームワークやテクノロジーに加えて、40以上のデスクトップおよびモバイルブラウザをサポートしています。 基本的に、ブラウザでレンダリングする場合、EveryStep Web レコーダーを使用してスクリプトを作成できます。 ウェブ トランザクションの各ステップは、ユーザーが行うようにアプリケーションをナビゲートするだけで記録し、実際のブラウザでそれらのスクリプトを再生します。 最後に、このスクリプトを実行し、負荷の下で記録した手順とシナリオをテストして、さまざまなワークロードでのパフォーマンスの把握を改善します。

EveryStep Web レコーダーを使用してスクリプトを記録し、LoadView を使用してロード テストを実行するために使用される手順とプロセスを見てみましょう。

LoadView テストのホームページを開きます。 次の図に示すように、使用できるロード テスト オプションの種類が複数表示されます。 この場合、ウェブ アプリケーション オプションを選択して、ユーザーの体験の記録を開始します。

新しいロード テスト Web アプリケーションを作成する

 

新しいスクリプトを記録するオプションを取得します。 ストレス テストを実行するアプリケーションの ウェブ サイト URL、ブラウザーの種類、およびユーザー デバイスの種類を入力し、テスト ケースを記録してください。 詳細を追加した後で[今すぐ録音]ボタンをクリックしてください。

 

ウェブソケットエブリステップ

 

[今すぐ記録]ボタンをクリックすると、テスト対象のウェブサイトとやり取りし、シミュレートする手順を記録するオプションが表示されます。 ユーザーフローが完了したら、記録を停止するオプションがあります。

 

ウェブソケットレコードブラウザ

 

スクリプトの記録が正常に完了したら、テスト シナリオを使用して確認できます。 [ 今すぐ再生 ] ボタンを選択するか、[ 続行 ] ボタンをクリックしてテストに進むことができます。

 

エブリステップ録音停止

 

[続行] をクリックすると、シミュレートされたアクション スクリプトを準備して[テストの作成] ウィンドウにリダイレクトされます。 このビデオでテストの名前を付けることができ、後で [デバイスを作成 ]ボタンをクリックする必要があります。

 

Websocket テスト シナリオ ウィンドウ

 

デバイスが正常に作成されると、[ テスト シナリオ] 画面が表示され、ロード テストの目的に応じて異なる可能性がある ロード カーブの種類を設定できます。 以下の図は、LoadView が開発者とパフォーマンス テスト担当者に提供するロード テスト 曲線を示しています。

ウェブソケットテストシナリオ

 

ロード カーブを選択すると、同時実行ユーザー数とテスト期間でテストの実行を開始できます。 また、20 か所以上の場所からテストを実行して、 ユーザーが配置されている場所からパフォーマンスを測定およびテストするように選択することもできます。

テストが完了すると、テストの結果と関連するメトリックを表示できます。 その例を以下の画像に示します。

ウェブソケットの平均応答時間

 

平均ユーザー数の応答時間

[平均応答時間] グラフを使用したユーザーの平均数。

仮想ユーザーの Web ソケット数

概要: WebSocket ベースのアプリケーションのロード テスト

WebSocket のような革新的なテクノロジとそれに対処する新しい課題を説明したこの記事を通して見てきたように、開発者がリアルタイムソリューションとして WebSocket を使用する際に直面する可能性のある運用上の問題が数多く存在します。 これらのアプリケーションのロード テストは必須であり、負荷の下でリアルタイム アプリケーションの動作を見積もるのに役立ちます。 また、LoadView を使用して WebSocket ベースのアプリケーションをテストする方法、および WebSocket アーキテクチャに固有の主要な問題を発見するのに非常に役立つ EveryStep Web レコーダーについても、手順を追って説明しました。

今すぐ EveryStep Web レコーダーを試してみて、複雑なユーザー シナリオのスクリプト作成を開始する簡単な方法を確認してください。 LoadView 無料試用版にサインアップし、WebSocket ベースのアプリケーションのロード テストの実行を開始します。 ロード テスト クレジットで $20 を取得して開始します。 または、当社のパフォーマンスエンジニアの1人と独自の 1対1のデモ をスケジュールします。