SUS02-BP06 需要曲線を平坦化するためにバッファリングまたはスロットリングを実装する
バッファリングやスロットリングは、需要曲線を平坦化し、ワークロードに必要なプロビジョンドキャパシティを削減します。
一般的なアンチパターン:
-
即時対応が不要なクライアントのリクエストを即時処理している。
-
クライアントのリクエストの要件を分析していない。
このベストプラクティスを活用するメリット: 需要曲線を平坦化することで、ワークロードに必要なプロビジョンドキャパシティを削減できます。プロビジョンドキャパシティが削減されると、エネルギーの消費量が少なくなり、環境への影響が小さくなります。
このベストプラクティスが確立されていない場合のリスクレベル: 低
ワークロードの需要曲線を平坦化することで、ワークロードに必要なプロビジョンドキャパシティを削減し、環境への影響を減らすことができます。以下の図に示す需要曲線を持つワークロードがあるとします。このワークロードには 2 つのピークがあり、これらのピークを処理するために、オレンジの線で示されるリソース容量がプロビジョニングされます。このワークロードで使用されるリソースとエネルギーは需要曲線の下の領域ではなく、プロビジョンドキャパシティのラインの下の領域で示されます。これら 2 つのピークを処理するには、プロビジョンドキャパシティが必要であるためです。
バッファリングやスロットリングを使用して需要曲線を変化させ、ピークをならすことができます。つまり、プロビジョンドキャパシティや消費されるエネルギーを減らすことができます。クライアントが再試行を実行できるときはスロットリングを実装します。バッファリングは、リクエストを保存し、後日まで処理を延期するために実装します。
実装手順
-
クライアントのリクエストを分析して、それらに応答する方法を決定します。考慮すべき問題は以下のとおりです。
-
このリクエストは非同期で処理できるか?
-
クライアントは再試行できるか?
-
-
クライアントが再試行できる場合、スロットリングを実装できます。これにより、現在リクエストを処理できない場合は、後で再試行する必要があることが送信元に通知されます。
-
Amazon API Gateway
を使用してスロットリングを実装できます。
-
-
再試行できないクライアントの場合は、バッファを実装して需要曲線を平坦化する必要があります。バッファはリクエスト処理を延期し、アプリケーションが異なる動作速度で実行されていても効果的に通信できるようにします。バッファベースのアプローチでは、キューまたはストリーミングを使用して、プロデューサーからメッセージを受信します。メッセージはコンシューマーによって読み取られ、処理されるため、コンシューマーのビジネス要件を満たせる動作速度でメッセージを実行できます。
-
Amazon Simple Queue Service (Amazon SQS)
は、1 人のコンシューマーが個別のメッセージを読むことができるキューを提供するマネージドサービスです。 -
Amazon Kinesis
は、多数のコンシューマーが同じメッセージを読み取ることができるストリームを提供します。
-
-
全体的な需要、変化率、および要求される応答時間を分析して、必要なスロットルまたはバッファのサイズを適正化します。
リソース
関連するドキュメント:
-
Getting started with Amazon SQS (Amazon SQS の開始方法)
-
Application integration Using Queues and Messages
(キューとメッセージを使用したアプリケーション統合)
関連動画:
-
Choosing the Right Messaging Service for Your Distributed App
(分散アプリケーションに適したメッセージングサービスを選択する)