API・メッセージング

APIスロットリング えーぴーあいすろっとりんぐ

レート制限API流量制御429 Too Many Requestsバックプレッシャークォータ
APIスロットリングって何?

簡単に言うとこんな感じ!

人気ラーメン店が「1組1時間以内でお願いします」と回転率を管理するイメージだよ。APIに「1分間に〇〇回まで」って上限を設けて、使いすぎる人を制限することで、サーバーが落ちないようにする仕組みなんだ!


APIスロットリングとは

APIスロットリング(API Throttling)とは、APIへのリクエスト数を一定時間内に制限する仕組みのことです。「throttle(絞り弁)」という言葉のとおり、流量を絞ることでサーバーへの負荷を適切にコントロールします。レート制限(Rate Limiting)と呼ばれることもあり、両者はほぼ同じ意味で使われます。

ビジネスシステムが外部サービスのAPIを呼び出す場面で特に重要な概念です。たとえば、自社の受発注システムが物流会社のAPIに1秒間に何千回もリクエストを送り続けたとしたら、相手のサーバーに深刻な負荷をかけてしまいます。スロットリングはこうした「意図せぬ攻撃」や「悪意ある乱用」を防ぐための安全弁として機能します。

近年はクラウドサービスやSaaSの普及に伴い、ほぼすべての商用APIにスロットリングが設定されています。システム選定・発注時にはAPIの制限値(クォータ)の確認が必須であり、ビジネス側がこの概念を理解しておくことが実務上の判断ミスを防ぎます。


スロットリングの仕組みと種類

スロットリングにはいくつかの制限単位と計測方式があります。組み合わせて設定されることも多いです。

制限の種類意味
リクエスト数/秒(RPS)1秒あたりの最大リクエスト数10 RPS
リクエスト数/分(RPM)1分あたりの最大リクエスト数600 RPM
リクエスト数/日(RPD)1日あたりの最大リクエスト数10,000 RPD
クォータプランに応じた月次上限100万回/月
同時接続数並行して処理できる接続の上限最大50コネクション

制限を超えると、APIサーバーは HTTPステータスコード 429 Too Many Requests を返します。適切に設計されたシステムはこのエラーを受け取ったら、一定時間待ってからリトライする処理(バックオフ)を実装します。

覚え方:「道路の制限速度」

スロットリングは道路の制限速度と同じです。「60 km/h まで」という制限があるのは、事故(サーバー障害)を防ぐためであり、みんなが安全に道路(API)を使えるようにする仕組みです。制限を破ると警告(429エラー)が来て、しばらく走れなくなります。

主なアルゴリズムの分類

アルゴリズム特徴向いている場面
固定ウィンドウ「1分ごと」など固定時間で集計シンプルで実装しやすい
スライディングウィンドウ直近の時間帯をずらしながら集計より公平な制限が可能
トークンバケットバケツにトークンが補充され、使うたびに消費バースト(瞬間的な大量送信)を許容したいとき
リーキーバケット一定速度でしか処理しない(溢れると廃棄)流量を厳密に平滑化したいとき

歴史と背景

  • 2000年代初頭 — Web APIが普及し始め、過剰アクセスによるサーバー障害が頻発するように
  • 2006年 — AWSがAmazon S3を公開。商用クラウドAPIにレート制限を標準搭載する流れが始まる
  • 2007〜2010年 — Twitter・Facebookなどソーシャルメディアの公開APIが爆発的に普及。スクレイピング対策としてもスロットリングが注目される
  • 2012年頃API Gatewayというカテゴリが確立。スロットリングはゲートウェイの標準機能として組み込まれる
  • 2015年以降マイクロサービス化の加速に伴い、サービス間通信でのスロットリング(サーキットブレーカーパターンなど)が設計の常識に
  • 現在 — SalesforceやSlack、Google Maps APIなど主要SaaSはすべてプランごとにクォータを明示。契約前に制限値の確認が標準的なプロセスになっている

スロットリングと関連するAPI制御の比較

スロットリングは「流量を制限する」という概念ですが、似た概念と混同しやすいため整理しておきましょう。

API流量制御の概念マップ スロットリング リクエスト数を 時間単位で制限 レート制限 スロットリングと ほぼ同義で使われる クォータ プラン単位の 総量上限(月次など) サーキットブレーカー 障害を検知したら 自動で遮断・復旧 バックオフ 429受信後に 待ってからリトライ ロードバランシング 複数サーバーに 分散して負荷軽減 点線:連携して使うことが多い組み合わせ

主要なSaaSサービスの制限値の例を見ておくと、発注時の確認ポイントがわかります。

サービス制限の例超過時の挙動
Slack APITier 1: 1 RPM / Tier 4: 100+ RPM429を返し、Retry-Afterヘッダーで待機秒数を通知
Google Maps APIQPS制限あり(プランによる)429 または OVER_QUERY_LIMIT エラー
Salesforce APIプランごとに1日のAPI呼び出し数上限REQUEST_LIMIT_EXCEEDEDエラー
Stripe API100 RPS(テストモードは25 RPS)429を返す

関連する規格・RFC

規格・RFC番号内容
RFC 6585429 Too Many Requests HTTPステータスコードの正式定義
RFC 7231HTTPセマンティクス全般(Retry-Afterヘッダーの定義を含む)
OpenAPI SpecificationAPIの仕様記述標準。スロットリング情報を文書化する際に活用される

関連用語

  • APIゲートウェイ — APIへのリクエストを一元的に受け付け、スロットリングや認証を担う中継役
  • レート制限 — スロットリングとほぼ同義で使われる、リクエスト頻度の制限
  • サーキットブレーカー — 障害を検知すると自動で接続を遮断し、システム全体を守るパターン
  • バックオフ — リトライの際に待機時間を徐々に伸ばすことで、サーバー負荷の集中を防ぐ戦略
  • Webhook — APIのリクエスト-レスポンス型とは逆に、サーバー側からイベントをプッシュ通知する仕組み
  • REST API — HTTPをベースにしたAPI設計スタイル。スロットリングが最もよく適用される形式