ひとことで言うと
レートリミットは、短い時間に受け付ける依頼の数へ上限をつけて、サービスが一気に混みすぎないようにする仕組みです。 誰か1人や1つのアプリが窓口を占有しないようにするため、公開APIやログイン画面、検索機能などでよく使われます。 APIキー やIPアドレス単位で数えることが多く、「誰がどれだけ短時間に使えるか」を整理する役割があります。
たとえ話でもう少し詳しく
レートリミットは、窓口で「1分に受け付ける件数はここまで」と決める運用に似ています。
- 受付の処理能力を超えるほど一気に人が来ても、無制限には受けない
- 特定の人だけが窓口を占有しないようにできる
- 上限を超えたら、少し待ってから来てもらう
システムの世界でも同じです。 API やWebサービスは、短時間に大量のリクエストが来ると、処理遅延や障害につながることがあります。 レートリミットを入れておくと、1ユーザー、1IP、1APIキーなどの単位で回数をしぼり、混雑や乱用を抑えやすくなります。
よく出る場面・使いどころ
- 公開APIで、短時間の大量呼び出しを防ぎたいとき
- ログイン試行や検索機能への連打を抑えたいとき
- 無料プランと有料プランで使える量を分けたいとき
- サービス障害時に、これ以上の集中で悪化しないよう守りたいとき
似た言葉との違い
- APIキー
- 利用者やアプリを見分けるための手がかり
- レートリミットは、その相手に対して「どれだけの回数まで許すか」を決める仕組み
- WAF
- 危ない内容のアクセスを止める仕組み
- レートリミットは、内容よりも短時間あたりの回数や頻度を抑える仕組み
- 帯域幅
- 一度にどれくらい運べるかという回線の太さ
- レートリミットは、窓口で受ける件数の上限を決める運用ルール
実務で気にするポイント
- 何を単位に数えるかを決める
- 超過時に返す案内や待ち時間をわかりやすくする
- 厳しすぎる設定で、普通の利用者まで困らせないようにする
- 負荷対策なのか、不正対策なのか、目的を分けて設計する
注意: レートリミットは便利ですが、これだけで性能問題が解決するわけではありません。アプリが重い、データベースが遅い、サーバー台数が足りないといった原因は、別に改善が必要です。