
お店のレジが混雑して、お客さんが入り口で待たされること、ありますよね? スロットリングは、これと同じように、システムへのアクセスが集中しすぎないように、交通整理をする技術です。サーバーがパンクしないように、入り口でアクセスを少しずつ制限するイメージです。
面接官:スロットリング / 流量制御について説明してください。
私:スロットリングとは、システムのリソースを保護するために、一定期間内に処理できるリクエスト数を制限する技術です。また流量制御は、ネットワークにおけるデータ転送量を調整し、輻輳を防ぐための仕組みです。これらは密接に関連しており、システム全体の安定性とパフォーマンスを維持するために重要な役割を果たします。
以前のプロジェクトで、APIサーバーがDDoS攻撃(分散型サービス拒否攻撃)に近い状態になったことがありました。大量のリクエストが短時間に集中し、サーバーの応答速度が著しく低下し、一部のサービスが停止寸前まで追い込まれました。
そこで、スロットリングを導入し、特定のIPアドレスからのリクエスト数を制限しました。具体的には、1分間に許可するリクエスト数を設定し、それを超えるリクエストは一時的に拒否するようにしました。
結果として、DDoS攻撃のような大量のリクエストを効果的に抑制し、サーバーの負荷を大幅に軽減することができました。また、正常なユーザーからのリクエストは引き続き処理できるため、サービスへの影響を最小限に抑えることができました。
現役エンジニアによる深掘り解説
スロットリングのメリット
システム負荷の軽減: 大量のトラフィックによるサーバーダウンを防ぎます。
リソースの保護: 特定のユーザーやAPIによるリソースの過剰な消費を制限します。
サービスの安定性向上: 負荷が高い状況でも、一定の品質を維持します。
セキュリティの強化: DDoS攻撃などの悪意のあるアクセスを防御します。
スロットリングのデメリット
正常なユーザーへの影響: スロットリング設定によっては、正常なユーザーのリクエストも制限される可能性があります。
設定の複雑さ: 適切なスロットリング設定を見つけるには、システムの特性やトラフィックパターンを理解する必要があります。
実装のオーバーヘッド: スロットリングの実装には、追加のコードやインフラストラクチャが必要になる場合があります。
監視の必要性: スロットリングが正しく機能しているか、継続的に監視する必要があります。
⚠️ 面接突破のワンポイント
- 「スロットリングを実装する際に考慮すべき要素(例えば、リクエスト数、期間、ユーザーの識別方法、拒否時の対応など)について説明できますか?」と聞かれる可能性があります。
- 「スロットリングと似た概念であるレートリミットとの違いを説明できますか?」と聞かれる可能性があります。


