Audit Log Service · View 08 of 40 · 3 · Structure
Decisions
- Dependencies point downwards only. The two lateral arrows are deliberate: the query plane and the disposal service both write records through the ingest plane like any other producer, using their own workload identities.
- That creates a real cycle — reading depends on writing. Resolved by buffering read records locally for up to 60 s and failing the read closed beyond that: a query that cannot be recorded does not run.
- The data layer calls nothing. Every store is written by the layer above it and read by nothing beneath it.
Technology per layer
- Service and processing: Rust for the ingest hot path, Go everywhere else. Both chosen for predictable tail latency rather than throughput.
- Data: Kafka, Blob, Confidential Ledger, ClickHouse, PostgreSQL, Valkey — five stores with five different durability contracts, set out in view 14.
- Platform: AKS across three zones, Entra ID, Managed HSM, OPA, Prometheus and Loki, Argo CD.
Omitted here
- Replica counts and node sizes are on view 09; zone placement is on view 29.