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