Platform

For the team that has to run it.

The stack
The deployment shape
The deployment shapeAn edge proxy serving the static interface in front of three services, gateway, API and worker, plus a one-shot migrations job, over PostgreSQL, Redis and object storage.Containers: three services, one job, one static interfaceEdge proxyTLS; serves the interfaceGatewaysessions, tenant routingAPIcommands and queriesWorkerday-end, messagingMigrations: a one-shot job, runs once per release before the services startState: the only things to back upPostgreSQLevery document and every event, tenant-taggedRedissessions and cache, disposableObject storagefiles, statements, exports
The same three services and three stores on a laptop, on Kubernetes or on two virtual machines. PostgreSQL is the record; Redis can be thrown away.
Delivery
  1. A pull request runs the unit suitea two-minute gate before anyone reads the code
  2. A land gates the integrated tree on the full suitebuild, unit, integration and interface checks, before the merge, never after
  3. A push to main builds and deploysfour images pushed to the registry, the interface bundle built, staging redeployed from a clean database and reseeded
  4. Migrations are proven on a fresh databaseevery push, in the pipeline, before they reach a real one
  5. Nightly, the full suite againand every release is a tag the Journal reads from

Stack

.NET, PostgreSQL, Redis, Marten for documents and events, Wolverine for messaging and handlers, .NET Aspire for the local stack, a React interface.

Databases

PostgreSQL today. SQL Server is a supported path in the same library family, not yet proven by us. We say so plainly when asked.

Containers

Three services as containers: gateway, API and worker, built from one Dockerfile, plus a one-shot migrations job that runs before each release starts. The interface is a static bundle served by the edge proxy. The local developer stack is the same shape as production.

Cloud or on-premises

No managed service is required. Runs on any Kubernetes or on a pair of virtual machines. A bank that keeps its data on its own floor can.

Scale

The engine's lineage ran a 6,700-account structured book for twenty-five years and a 100,000-account consumer book in New Zealand. The architecture serves both shapes: a small complex book and a large retail operation. A measured figure for LedgerTM itself is published when we have one.

Operations

Day-end per tenant with a full run log; structured logging and health checks through .NET Aspire; one database to back up and restore.

Tests

9,227 tests across five suites, counted on every deploy.

The suites →