Skip to content
Preptima
hardDesignConceptScenarioMidSeniorStaff

One tenant bursts to ten times their normal traffic and every other customer's latency doubles. Your global rate limit was never hit. How would you design for fairness instead?

A global limit protects the service from overload but says nothing about how capacity is divided, so one tenant can consume most of it while staying under the ceiling. Fairness needs per-tenant accounting: a token bucket for the steady-state contract, a concurrency limit so expensive requests cannot hog workers, and round-robin queueing so a burst queues behind itself.

5 min readUpdated 2026-08-16Target archetype: Big Tech, Enterprise Captive, Product Startup

Answer

Short answer

A global limit answers "is the service about to fall over", not "who is allowed to use it". Below that ceiling, capacity is allocated first-come-first-served, which is a lottery a bursting tenant always wins. Fairness requires accounting per tenant: a rate limit for the steady-state contract, a concurrency limit so expensive requests cannot occupy every worker, and a queueing discipline that interleaves tenants rather than serving them in arrival order.

Was this answer helpful?

Likely follow-ups

  • Your limiter is per-instance across thirty pods. What actually happens to a tenant's effective limit?
  • One tenant sends cheap requests and another sends expensive ones at the same rate. Is that fair?
  • Tenant A is idle and tenant B wants to burst. Do you let them, and how do you take it back?
  • Where do you enforce this - gateway, service, or database - and why not all three?
  • How would you roll this out to existing customers without breaking their integrations?

Related questions

Further reading