【学習記録】API GatewayのThrottleの設定について勉強

API Gatewayで大量にリクエストが来た場合の処理の設定でThrottleという概念を知ったのでメモします。
API Gatewayを実際に手を動かして体験した後に勉強していると、手を動かす前よりもイメージしやすいですね。
やっぱり自分で動かすのはすごく勉強効率良いなと再認識できたので、座学とハンズオンのバランス取りながら勉強していきます。

こちらの公式ドキュメントを参照しました。
docs.aws.amazon.com

API で処理するリクエストが多すぎないように、Amazon API Gateway ではトークバケットアルゴリズムを使用してトークンでリクエストをカウントし、API へのリクエストを調整します。特に API Gateway では、アカウントのすべての API に送信されるリクエストの定常レートとバーストに対して、リージョンごとに制限を設定します。トークバケットアルゴリズムでは、バーストは最大バケットサイズです。

トークバケットアルゴリズムはまだよくわかってないですが、まずAPIGatewayでは処理が多すぎないように調整する機能があることがわかりました。

ちなみに英語でThrottleとよく出てくるのですが、いまいち意味がわからなかったので意味をググってみると下記の説明がありました。

a device controlling the flow of fuel or power to an engine.

なるほど、ガゾリンとか液体が流れすぎないように調整する弁みたいなイメージを持つと良さそうな気がしました。

リクエストの送信数がリクエストの定常レートおよびバーストを超えると、API Gateway は制限を超えたリクエストを失敗させ、クライアントに 429 Too Many Requests エラーレスポンスを返します。

429というHTTPレスポンスは知らなかったので勉強になりました。

これらのスロットリング制限を理解するために、リージョンのバースト制限が 5,000 で、アカウントレベルのレート制限が 10,000 リクエスト/秒の場合の例をいくつか以下に示します。

発信者が、1 秒間に等しく 10,000 リクエストを送信した場合 (たとえば、ミリ秒毎に 10 リクエスト)、API Gateway は 1 つも削除することなくすべてのリクエストを処理します。

発信者が、最初の 1 ミリ秒間で 10,000 リクエストを送信した場合、API Gateway はそのうち 5,000 に対応し、残りは 1 秒間中に調整します。

なるほど、10,000 リクエスト/秒の設定の場合は1秒以内に10000リクエストまで捌けて、それ以上のリクエストが来たら5000リクエストまで処理してそれ以降は1秒おきに処理する、みたいな感じっぽいですね。(多少認識違いはあるかも知れません)

API Gatewayを使いこなせるとかなり便利そうですね。使いこなしていろいろなサービスを運用している自分をイメージしながら勉強していきます。