Incident Management Platform  ·  View 08 of 34  ·  3 · Structure

Layered Architecture

Seven layers. The top four are the paging path; the bottom three can be unavailable without a page being lost.

Editable source SVG draw.io All views
Signal edge HAProxy edge BGP anycast · quotas Postfix inbound email ingest · replies Ingest gateway Go · CEL mappings Quarantine per integration Paging path Incident engine dedup · group · suppress Escalation timers sharded wheel Dispatcher channel policy Ack receiver DTMF · SMS · push Paging state NATS JetStream stretched · 3 sites Coverage snapshot KV · 72 h ahead Notification ledger stream · 30 d Delivery Push relay APNs · FCM Jasmin SMS SMPP · two routes Asterisk SIP · two carriers Postfix outbound two smarthosts Control plane Schedule resolver IANA zones Incident service roles · updates Review module drafts · actions Console web · break-glass Record and insight PostgreSQL event log · projections ClickHouse ledger · raw · noise Ceph RGW Object Lock archive Identity, secrets and reporting Keycloak OIDC broker OpenBao secrets · transit keys Grafana reports · dashboards normalised call · SMS append Layered Architecture Interface / broker Application we own Risk / gap Queue / topic Data store Security / platform event / async synchronous The top four layers are the paging path and depend on nothing below them at run time. The control plane reaches up only by publishing a snapshot into the paging state. v 1.0 · owner Reliability Architecture · date 2026-09

Decisions

  • The paging path is four layers of small components written for one job each: an edge that sheds load per integration, services that decide and dispatch, the state they share, and the software that speaks to carriers. Nothing below them is called at run time.
  • Delivery software runs inside the platform rather than behind a third-party aggregator. Asterisk and Jasmin speak SIP and SMPP to two carriers directly, which is what makes a keypress or an SMS reply an acknowledgement the platform receives itself (ADR-20).
  • Record and insight stores are ordinary, well-understood databases. PostgreSQL holds seven years of events, ClickHouse holds thirteen months of attempts, Ceph holds the tamper evidence.

Build and adopt

  • Built: ingest gateway, incident engine, escalation timers, dispatcher, ack receiver, schedule resolver, incident service, review module, console. Everything else is adopted open source (ADR-05). The built parts are the ones that encode the requirement; the adopted parts are the ones that encode decades of other people's operations.

Omitted

  • Prometheus, Loki and the OpenTelemetry collectors that watch every layer (view 28), and the responder mobile app, which is a client of the ack receiver.