

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# GAMEPERF05-BP02 non-latency-sensitiveコンピューティングタスクを非同期ワークフローに移動する
<a name="gameperf05-bp02"></a>

 ゲームのパフォーマンスを最適化するときは、クライアントとゲームバックエンド間のインタラクションの一部のみを同期的に実行する必要があることに注意してください。プレイヤーエクスペリエンスの観点から各機能を検討し、特定のインタラクションでブロックされリソースを大量に消費する同期通信が必要かどうか、またはそれらの機能を非同期的に実装できるかどうかを決定する必要があります。ネットワーク呼び出しを実装するときは、非同期のノンブロッキングアプローチを使用します。さらに、ゲームバックエンドは、タスクをキューにオフロードし、可能な場合はクライアントへの高速応答を優先することで、効率的な方法で作業を実行するように設定する必要があります。

 **このベストプラクティスを活用しない場合のリスクレベル:** 高 

## 実装のガイダンス
<a name="implementation-guidance-55"></a>

 たとえば、プレイヤーセッションの終了時にリーダーボードを更新すると、クライアントがリーダーボードの更新が完了するまで待つ必要がないように、非同期で実装できます。代わりに、この をゲームクライアントに非同期的に実装し、これらのタイプのオペレーションを Amazon SQS などのキューにプッシュするようにバックエンドサービスを設計することを検討してください。このアーキテクチャでは、リクエストを受け入れるようにバックエンドを設定し、非同期処理のためにメッセージを永続的に保存し、クライアントにすみやかに応答するのに役立つ SQS にキューに入れます。リーダーボードの更新が完了すると、バックエンドはゲームクライアントに更新を送信して、プレイヤーのリーダーボードの表示を更新できます。

 または、プレイヤーはゲームのリーダーボード画面にアクセスして最新のデータを取得するだけで、バックエンドにウェブリクエストを発行してキャッシュから最新のデータを取得できます。

### 実装手順
<a name="implementation-steps-54"></a>
+  クライアントとバックエンドのやり取りに同期通信が必要かどうかを判断します。可能な場合は非同期のノンブロッキングアプローチを実装して、リソースの使用を最適化します。
+  Amazon SQS を使用して、リーダーボードの更新などの重要でないタスクをオフロードします。
+  クライアントがオンデマンドで、またはバックグラウンド更新を介して最新のリーダーボードデータを取得するなど、更新されたデータを非同期的に取得できるようにします。

### リソース
<a name="resources-11"></a>
+  [マイクロサービスの非同期メッセージングについて](https://aws.amazon.com/blogs/compute/understanding-asynchronous-messaging-for-microservices/) 
+  [Lambda - サービス統合と非同期処理の使用](https://docs.aws.amazon.com/lambda/latest/operatorguide/integrations-asynchronous.html) 