Запитання про Rate Limiting можна почути як на звичайній технічній співбесіді, так і на System Design інтерв’ю.
Уявіть, що ви розробляєте API, доступний усім зареєстрованим клієнтам. Тут одразу виникає кілька потенційних проблем.
Насамперед, якщо користувачі можуть виконувати необмежену кількість запитів, зі зростанням продукту це суттєво збільшить навантаження на систему та витрати на інфраструктуру.
Також це призведе до нерівномірного розподілу ресурсів між клієнтами і проблеми Noisy Tenants (коли один клієнт перебирає на себе велику кількість ресурсів, що, в свою чергу, негативно впливає на інших).
У такому випадку можна обмежити кількість викликів API. Наприклад, клієнтам із базовим тарифним планом дозволити виконувати не більше 1000 запитів на день. Якщо їм потрібно більше, вони можуть перейти на інший тарифний план із вищими лімітами.
Коли клієнт перевищує встановлений ліміт, сервер зазвичай повертає статус 429 Too Many Requests. Додатково у відповіді можна вказати, скільки часу потрібно зачекати перед наступною спробою.
Таким чином, Rate Limiting допомагає контролювати навантаження, зменшувати витрати та гарантувати, що ресурси системи будуть справедливо розподілені між усіма клієнтами.