Orkutのようなソーシャルネットワーキングアプリケーションで友達とチャットし(はい、それを覚えていますか?)、リアルタイムでメッセージを送受信できることに夢中になっていると感じた初期の経験を覚えていますか? 現在まで早送りすると、Gmail、Slack、WhatsApp、Shazam、Instagram、その他無数のアプリケーションを何の目も見ずに使用しています。 私たちは、ほんの数年でリアルタイム ウェブ の台頭を実際に目撃しました。 これが可能になった最大の理由の1つは、主にWebSocketプロトコルの導入によるものです。 WebSocketとは何か、その機能、利点、およびWebSocketを利用するアプリケーションとWebサイトのストレステストの方法を説明し、理解して、ストレス下での全体的なパフォーマンスと、それがユーザーエクスペリエンスにどのように影響するかを理解してみましょう。
ウェブソケットとは何ですか?
定義上、WebSocket は 、単一の TCP を介した双方向のコンピューター通信プロトコルです。 WebSocketsは、 クライアントとサーバー間の大規模なデータ転送を処理するのに非常に役立ちます。 WebSocketは、クライアントとサーバー間の接続を常に開いたままにすることで機能するという点で異なります。 この方法を使用すると、サーバーは、クライアントによって開始されていない場合でも、いつでも情報を送信できます。 クライアントは引き続きサーバーに対して通常のHTTPリクエストを行うことができますが、WebSocketはクライアントとサーバー間のメディアを開いて通信します。 Nginx、Apache、Windows ServerなどのWebサーバーはすべてWebSocketsプロトコルをサポートしており、Chrome、Edge、Internet Explorer、Firefox、Safariなどの一般的なブラウザもサポートしています。
Webソケットはどこで使用されますか?
WebSocket は、次のシナリオやアプリケーションなど、ほぼリアルタイムの通信が必要な状況に適しています。
- オンラインマルチプレイヤーゲーム
- チャットアプリケーション
- モノのインターネット
- リアルタイムアプリケーション
- スポーツのスコア/ティッカー
WebSocketsの利点と利点
- クライアントとサーバー間の継続的な接続。 これにより、クライアントが要求しなくても、いつでもクライアントに情報を送信することが可能になります。
- 全二重通信。 通信は、クライアントとサーバーの両方が接続されているときはいつでも、どちらの方法でも開始できます。
- 低遅延。 HTTPヘッダーやCookieなどのオーバーヘッドは非常に限られているため、データ転送の速度はシームレスで高速になります。
- HTTP ポーリング。 これにより、クライアントは最新の情報をサーバーにポーリングし続けることができます。 ポーリングは、今日、膨大な数のアプリケーションで使用されており、ほとんどの場合、RESTful プラクティスに使用されます。
ウェブソケットのデメリット
- WebSocket は HTTP よりも使用が複雑です。 Telnet を使用して HTTP 接続を確立することはできますが、WebSocket を使用して同じ接続を確立することはできません。
- WebSocket を使用した負荷分散とプロキシのセットアップはできません。
- 接続切断の間に接続が切断された場合、再接続処理は WebSocket に存在しません。
WebSocket を使用するアプリケーションのパフォーマンス テスト
これまで見てきたように、WebSocketは、たとえばWebサイトでリアルタイムコンテンツを配信するチャットアプリケーションやニュースフィードをサポートするために利用できますが、適切に実装すると全体的なユーザーエクスペリエンスに影響を与える可能性のあるパフォーマンスの問題が発生する可能性があります。 これを保護するには、Webサイトまたはアプリケーションで負荷テストとストレステストを実行して、パフォーマンスの問題、ボトルネック、または劣化の問題を見つけるのが賢明です。 多数の同時ユーザーに対してアプリケーションを配置すると、ユーザーが何を経験するかをよりよく理解できます。
EveryStep Web レコーダーを使用したロードビューによるパフォーマンス テスト
EveryStep Web レコーダーは、閲覧中にスクリーン レコーダー オプションを提供し、Web サイトやアプリケーションとのクライアント側の対話をシミュレートするのに役立ちます。 HTML40、Java、Ruby、React、Vue、Angular、Knockoutなどの動的な ウェブ アプリケーションの作成に使用されるフレームワークとテクノロジーに加えて、5を超えるデスクトップおよびモバイルブラウザーをサポートします。 基本的に、ブラウザーでレンダリングする場合は、EveryStep Web レコーダーを使用してスクリプトを作成できます。 ユーザーが行うようにアプリケーションをナビゲートし、実際のブラウザでそれらのスクリプトを再生するだけで ウェブ トランザクションの各ステップを記録できます。 最後に、そのスクリプトを使用して、負荷がかかった状態で記録した手順とシナリオをテストして、さまざまなワークロードでのパフォーマンスをよりよく理解できます。
EveryStep Web レコーダーを使用してスクリプトを記録し、 LoadView を使用してロード テストを実行するために使用される手順とプロセスを見てみましょう。
ロードビュー テスト ホームページを開きます。 次の図に示すように、使用できる複数の種類のロード テスト オプションが表示されます。 このユースケースでは、 Webアプリケーション オプションを選択して、ユーザーの旅の記録を開始します。
新しいスクリプトを記録するオプションが表示されます。 ストレステストを実行するアプリケーションの WebサイトのURL、ブラウザの種類、ユーザーデバイスの種類を入力し 、テストケースを記録してください。 クリックしてください 今すぐ記録 詳細を追加した後のボタン。
[ 今すぐ記録 ]ボタンをクリックすると、テスト対象のWebサイトと対話し、シミュレートする手順を記録するオプションが表示されます。 ユーザーフローが完了したら、記録を停止するオプションがあります。
スクリプトを正常に記録したら、を使用してテストシナリオを確認できます。 [ 今すぐプレイ ]ボタンを選択するか、[ 続行 ]ボタンをクリックしてテストに進むことができます。
[ 続行 ]をクリックすると、[ テストの作成 ]ウィンドウにリダイレクトされ、シミュレートされたアクションスクリプトの準備が整います。 このビデオでテストに名前を付けることができ、後で[ デバイスの作成 ]ボタンをクリックする必要があります。
デバイスが正常に作成されると、[ テスト シナリオ] 画面が表示され、負荷テストの目標に基づいて異なる 可能性のある負荷曲線の種類を設定できます。 次の図は、LoadView が開発者とパフォーマンス テスターが使用できるようにするロード テスト カーブを示しています。
負荷曲線を選択したら、 同時ユーザー数とテスト期間でテストの実行を開始できます。 また、20を超える地理的位置からテストを実行する場所を選択して、 ユーザーがいる場所からパフォーマンスを測定およびテストすることもできます。
テストが完了すると、テストの結果と関連するメトリックを表示できます。 その一例を下の画像に示します。
概要: WebSocket ベースのアプリケーションのロード テスト
WebSocket のような革新的なテクノロジと、それが対処する新しい課題についてこの記事で見てきたように、開発者が WebSocket をリアルタイム ソリューションとして使用するときに直面する可能性のある運用上の問題はたくさんあります。 これらのアプリケーションのロード テストは必須であり、負荷がかかった状態でのリアルタイム アプリケーションの動作を推定するのに役立ちます。 また、LoadView を使用して WebSocket ベースのアプリケーションをテストする方法と、WebSocket アーキテクチャに固有の主要な問題を明らかにするのに非常に役立つ EveryStep Web レコーダーについても段階的に説明しました。
今すぐ EveryStep Web レコーダー を試して、複雑なユーザー シナリオのスクリプト作成を開始するのがいかに簡単かを確認してください。 LoadView 無料試用版にサインアップし、WebSocket ベースのアプリケーションのロード テストの実行を開始します。 最大 5 つの無料ロード テストを利用できます。 または、パフォーマンスエンジニアの1人との1 対1のデモ をスケジュールします。