Problem Statement. Backend uses a single Prisma datasource. Reads and writes share
the same connection budget; long-running reports slow daily operations.
Why it matters. A trivial operational scale-up.
Technical Context. @prisma/client supports datasources per-client.
Expected Outcome. A PrismaReadReplicaService wraps Prisma but routes find*,
count*, aggregate* to DATABASE_URL_READ while keeping writes on DATABASE_URL.
Acceptance Criteria.
- E2E test asserts that two parallel reads survive a write transaction
(writes via primary, reads via replica).
- Dashboard endpoints (
/metrics?source=…) declare read-replica explicitly.
Files or modules likely to be affected. src/prisma/prisma.module.ts,
new src/prisma/prisma-read-replica.service.ts.
Difficulty. Medium
Estimated effort. M
Backend Architecture — Issues 39–48
Backlog item #38 from `docs/maintainer-issue-backlog.md.
Problem Statement. Backend uses a single Prisma datasource. Reads and writes share
the same connection budget; long-running reports slow daily operations.
Why it matters. A trivial operational scale-up.
Technical Context.
@prisma/clientsupportsdatasourcesper-client.Expected Outcome. A
PrismaReadReplicaServicewraps Prisma but routesfind*,count*,aggregate*toDATABASE_URL_READwhile keeping writes onDATABASE_URL.Acceptance Criteria.
(writes via primary, reads via replica).
/metrics?source=…) declare read-replica explicitly.Files or modules likely to be affected.
src/prisma/prisma.module.ts,new
src/prisma/prisma-read-replica.service.ts.Difficulty. Medium
Estimated effort. M
Backend Architecture — Issues 39–48
Backlog item #38 from `docs/maintainer-issue-backlog.md.