Noisy tenants це одна з типових проблем в Multi-tenant системах, коли один шумний tenant(клієнт) починає споживати непропорційно багато ресурсів, наприклад CPU, памʼять, черги чи ліміти в API. Таким чином, це впливає на інших клієнтів: росте latency, зʼявляються timeouts, проблеми з сесіями чи поява downtime.
Як це виглядає на практиці
Наприклад, ви використовуєте брокер повідомлень(SQS, RabbitMQ…) і один tenant генерує велику кількість подій. Так як брокер і обробники подій спільні вони здебільшого обробляють повідомлення від noisy tenant, а інші клієнти страждають від збільшеного latency.
Ще один приклад, повʼязаний з сторонніми інтеграціями. Ви не встановили чітких Rate limits для клієнтів і noisy tenant викликає стороннє API настільки часто, що дуже швидко вибиває всі ліміти і інші клієнти не можуть повноцінно використовувати інтеграції.
Основні причини виникнення:
- Спільна інфраструктура: брокери повідомлень, бази даних, сервери і тд.
- Спільні ліміти зовнішніх сервісів або відсутність Rate limiting
- Нерівномірний розподіл трафіку
Приклади вирішення проблеми
- Ліміти і справедливе розподілення ресурсів
- Запровадження квот на важкі та затратні операції
- Виділення окремих ресурсів для “жирних” клієнтів