Webhook Delivery Service  ·  View 07 of 20  ·  Structure

Container View

Capture, fan-out, delivery and control — and what lives in which subnet.

Editable source SVG draw.io All views
Capture and fan-out — private subnets Capture Intake API ALB + Fargate Event Store DynamoDB + S3 Fan-out Subscription Matcher type + prefix Entitlement Filter Delivery Planner tenant budget Delivery plane — egress subnets, no inward route Queueing Per-Endpoint Queues SQS FIFO Dead-Letter Queues redrive Worker Delivery Worker Fargate Circuit Breaker per endpoint SSRF Guard re-resolve on connect Signer HMAC, 2 secrets Control plane and consumer surface Configuration Subscription Service Secret Store KMS-wrapped Surface Console Management API Replay Service rate-limited Attempt Log DynamoDB Product Services Customer Endpoints events per endpoint signed POST exhausted Container View — Capture, Fan-out and Delivery Interface / broker Data store Application we own Security / platform Queue / topic External / third party synchronous event / async failure / alternate Omitted for legibility: replay re-enqueue, the notification path, the audit writer and every observability edge. v 1.0 · owner Integration Platform Architecture · date 2026-09

Decisions

  • The delivery plane sits in its own egress subnets with no route inward. The SSRF guard is a control; the network topology is the control that holds when the guard has a bug (ADR-12).
  • Circuit breaker and SSRF guard are drawn inside the worker, not as services. Both must run on every attempt, and a per-attempt network call to a shared service would make them the bottleneck and the outage.
  • Replay runs on its own worker pool so a bulk replay cannot consume the capacity that first-attempt deliveries need (ADR-10).

Deliberately omitted

  • Replay re-enqueue, the notification path, the audit writer, and every observability edge. Four edges on a container view read better than ten.
  • The entitlement filter is shown but its policy source is not — it reads the product's own plan data, which is outside this boundary.

Open

  • How endpoints map onto physical SQS queues is the unresolved question this view papers over: 40,000 queues is a service-limit and cost problem, one shared queue with message groups isolates ordering but not throughput (ADR-03).