Event-Driven Notification Platform · View 04 of 26 · 2 · Structure
Container and Component Architecture
Every deployable unit, its technology, its replica floor, and the protocol on every hop.
Copy
PNG
PDF
⋯
Editable source
SVG
draw.io
All views
Notification Platform · Kubernetes with Istio ambient mesh
Notification Platform · Kubernetes with Istio ambient mesh
Edge and API
Edge and API
Envoy Gateway
mTLS · JWT · quota
Envoy Gateway...
Event Ingest API
Go · 12 pods
Event Ingest API...
Notification API
Go · 6 pods
Notification API...
Admin API
Go · 3 pods
Admin API...
Admin Console
React · static
Admin Console...
Decision plane
Decision plane
Rules Engine
Flink · 24 task managers
Rules Engine...
Dedup Processor
Flink keyed state · 7 d
Dedup Processor...
Orchestrator
Temporal · 40 workers
Orchestrator...
Preference Service
Go · 8 pods
Preference Service...
Scheduler
Temporal cron
Scheduler...
Composition plane
Composition plane
Template Service
Go · 4 pods
Template Service...
Render Service
Go · 20 pods
Render Service...
Recipient Profile
Go · 8 pods
Recipient Profile...
Rate Limiter
Redis Lua
Rate Limiter...
Delivery plane
Delivery plane
Email Worker
Go · 30 pods
Email Worker...
SMS Worker
Go · 12 pods
SMS Worker...
Push Worker
Go · 16 pods
Push Worker...
In-App Worker
Go · 8 pods
In-App Worker...
Webhook Worker
Go · 10 pods
Webhook Worker...
Chat Worker
Go · 4 pods
Chat Worker...
Stateful services
Stateful services
Apache Kafka
Strimzi · 12 brokers
Apache Kafka...
PostgreSQL
CloudNativePG · HA
PostgreSQL...
ClickHouse
3 shards × 2 replicas
ClickHouse...
Redis Cluster
6 nodes
Redis Cluster...
MinIO
Iceberg warehouse
MinIO...
Keycloak
OIDC
Keycloak...
HashiCorp Vault
tenant credentials
HashiCorp Vault...
Grafana LGTM
observability
Grafana LGTM...
Channel providers
email · SMS · push · chat
Channel providers...
Customer Master
contact lookup
Customer Master...
HTTP/2 · mTLS
HTTP/2 · mTLS
produce acks=all
produce acks=all
consume evt.valid
consume evt.valid
notif.intent
notif.intent
gRPC render
gRPC render
resolve contact
resolve contact
deliver topic
deliver topic
SMTP · REST
SMTP · REST
lease credential
lease credential
gRPC · cached 24 h
gRPC · cached 24 h
Container and Component Architecture
Container and Component Architecture
Interface / broker
Interface / broker
Application we own
Application we own
Queue / topic
Queue / topic
Data store
Data store
Security / platform
Security / platform
External / third party
External / third party
synchronous
synchronous
event / async
event / async
Pod counts are the steady-state floor at 5 000 events/s. Every plane scales independently; view 20 gives the signals and the ceilings.
Pod counts are the steady-state floor at 5 000 events/s. Every plane scales independently; view 20 gives the signals and the ceilings.
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
Four planes — edge, decision, composition, delivery — each scaling on its own signal
Rendering is a separate service from orchestration so a template change never redeploys the decision plane
Recipient Profile is the only component allowed to read the PII vault; everything else passes a reference
Technology choices and the alternative
Flink over Kafka Streams: windowing, broadcast rule state and independent scaling of the rule job
Temporal over a database-backed scheduler: durable timers, retries and multi-step fallback for free
Go over Java for workers: startup time and memory footprint at 600 pods at peak
ClickHouse over PostgreSQL for delivery attempts: about 1 billion rows a day would not fit the relational store
Assumptions
Pod counts are the steady-state floor at 5 000 events/s and are validated by the staging load test, not by calculation
Kafka runs on the same cluster as the workloads with dedicated node pools; a separate cluster is the fallback if noisy-neighbour tests fail
◀ Layered Architecture
All views
Integration and Interface Catalogue ▶