Event-Driven Notification Platform  ·  View 08 of 26  ·  2 · Structure

Multi-Tenancy and Noisy-Neighbour Control

What every tenant shares, what each one gets alone, and what stops one from hurting the rest.

Editable source SVG draw.io All views
Shared compute — one platform, many tenants
Shared compute — one platform, many tenants
Shared
Shared
Kafka cluster
tiered topics
Kafka cluster...
Kubernetes node pools
Kubernetes node pools
Flink job
keyed by tenant_id
Flink job...
Channel worker pools
shared tier
Channel worker pools...
Per tenant
Per tenant
Rule set
tenant-scoped CEL
Rule set...
Template set
Template set
Provider credentials
Vault path per tenant
Provider credentials...
Quota
events/s and notif/day
Quota...
Data isolation
Data isolation
Logical — every tenant
Logical — every tenant
Notification Store
RLS on tenant_id
Notification Store...
Preference Store
RLS on tenant_id
Preference Store...
Delivery Store
tenant_id sort key
Delivery Store...
PII Vault
per-tenant data key
PII Vault...
Physical — dedicated tier
Physical — dedicated tier
Dedicated topics
top 5 tenants
Dedicated topics...
Dedicated worker pool
taint and toleration
Dedicated worker pool...
Dedicated database
regulated tenants
Dedicated database...
Noisy-neighbour controls
Noisy-neighbour controls
Admission
Admission
Gateway quota
per-tenant rps + burst
Gateway quota...
Priority tiering
P0 · P1 · P2
Priority tiering...
Payload cap
64 KB hard
Payload cap...
Execution
Execution
Consumer concurrency cap
per tenant per channel
Consumer concurrency cap...
Provider TPS budget
fair share
Provider TPS budget...
Circuit breaker
tenant × provider
Circuit breaker...
Shared Flink job
one hot key lags a partition
Shared Flink job...
Per-tenant metrics
lag · spend · error rate
Per-tenant metrics...
classified
classified
tier topic
tier topic
skew risk
skew risk
trip events
trip events
Multi-Tenancy — What Is Shared and What Is Not
Multi-Tenancy — What Is Shared and What Is Not
Queue / topic
Queue / topic
Security / platform
Security / platform
Application we own
Application we own
Data store
Data store
Interface / broker
Interface / broker
Decision point
Decision point
Risk / gap
Risk / gap
synchronous
synchronous
event / async
event / async
failure / alternate
failure / alternate
Tenants share compute by default and buy isolation where they need it. The one unsolved risk is drawn in red: a single hot tenant key can lag a Flink partition, mitigated by key salting on the P2 tier only.
Tenants share compute by default and buy isolation where they need it. The one unsolved risk is drawn in red: a single hot tenant key can lag a Flink partition, mitigated by key salting on the P2 tier only.
v 1.0 · owner Data & AI Global Practice · date 2026-08
v 1.0 · owner Data & AI Global Practice · date 2026-08
Text is not SVG - cannot display

Decisions

  • Shared compute by default; isolation is a purchasable tier, not the baseline architecture
  • Isolation is enforced in four independent places: gateway quota, topic ACL, row-level security and per-tenant encryption key
  • Priority tiering runs end to end, so isolation survives the queue as well as the request

Noisy-neighbour controls

  • Per-tenant requests per second with burst at the gateway, returning 429 with Retry-After
  • Per-tenant per-channel consumer concurrency cap, so one tenant cannot occupy the worker pool
  • Circuit breakers scoped to tenant and provider together, so one tenant's bad endpoint does not trip another's

Unresolved risk

  • One Flink job serves all tenants; a single hot key can lag its partition and delay unrelated tenants on that partition
  • Mitigated by key salting on the bulk tier only — salting the transactional tier would break per-entity ordering
  • Owner: platform engineering. Needs a decision on dedicated jobs for the top five tenants before go-live