Skip to content

Architecture & components

ComponentWhat it isNotes
APIGo service (Gin)The product. Stateless except for its on-disk WAL.
MongoDBOff-chain record storeThe queryable hot tier.
RedisCache + shared rate limiterOptional; the API degrades gracefully without it.
Hyperledger FabricPermissioned ledgerStores Merkle roots; Go chaincode. External to the API.
WALOn-disk write-ahead logPer-pod; must be on durable storage.
DashboardStatic web UI (nginx)Optional; talks directly to the API.
┌─────────────┐ gRPC (gateway)
client ──▶│ Go API │──────────────────────▶ Hyperledger Fabric
└─────┬───┬───┘ (Merkle roots, write-once)
│ └────────▶ Redis (cache + limiter)
▼
MongoDB (records) WAL (durable record writes)

The API talks to Fabric only through the gateway gRPC SDK with an X.509 identity — no Docker socket, no peer CLI.

  • API: mostly stateless, but the file WAL is per-pod. A ReadWriteOnce PVC cannot be shared across nodes, so multi-node HA needs a StatefulSet (per-pod WAL) — the Helm chart gates replicaCount > 1 behind an explicit opt-in.
  • Rate limiting & batching are already multi-instance safe (Redis-backed limiter, atomic batch claim).
  • MongoDB/Redis/Fabric scale on their own terms (replica sets, clusters, multi-org networks).