はじめに
Tailwind Traders のエンジニアであるあなたは、会社が株価情報を顧客に提供する新しい Web サイトの立ち上げを計画していることを知りました。 最近、インターンが新しいアプリケーション用の Web サイトのプロトタイプを作成し、現在、アーキテクト リーダーはあなたに参加を求め、ソリューションを改善するよう依頼しています。 あなたの目的は、アプリを更新して在庫価格情報の自動更新を実装するが、サーバー上のデータが変更されたときにのみ、クライアントとサーバー間の通信が行われるようにすることです。
プロトタイプ アーキテクチャ
サーバー プロトタイプには 2 つの機能があります。
関数名 | トリガーの種類 | 説明 |
---|---|---|
getStocks | Azure Cosmos DB | サーバーは、データベース内の株式テーブルからすべてのデータを読み取り、クライアントが要求するたびにそのデータを HTTP 応答で返す役割を担います。 |
setPrice | Timer | データベース内のデータを変更する機能は、タイマー トリガーで実行されます。 これは、バックエンド システムからの変更の受信をシミュレートします。 |
プロトタイプとして、インターンは、1 分ごとに更新されるタイマー機能を使ってストック フィードをシミュレートしました。 クライアント Web サイトは、準リアルタイムのデータを表示するために、5 秒ごとに /api/getStocks
API エンドポイントからすべての株式を要求します。 このクライアント要求は効率的ではありません。 サーバーからデータをプルするのではなく、サーバーが新しい株式情報をプッシュする方が効率的です。
実行するタスク
このモジュールでは、次のことを行います。
- プロトタイプを実行する:クライアント アプリケーションを表示します。これは、すべての株式のサーバーを定期的にポーリングします
- アプリケーションを改善する:SignalR Service を使って接続されているクライアントに変更をブロードキャストし、準リアルタイムの更新を提供するサーバーレス Azure Functions アプリを実装します。
- SignalR に接続し、メッセージを取得して表示するように、クライアント JavaScript Web アプリケーションを更新します。