docs: clarify queue assumptions and tradeoffs
This commit is contained in:
22
README.md
22
README.md
@@ -49,6 +49,28 @@ The assignment requires PostgreSQL, and PostgreSQL gives a compact solution for
|
||||
|
||||
For a high-throughput distributed production queue, Redis-backed systems such as BullMQ or Sidekiq-style designs are common. That is documented as the next architecture, not implemented here.
|
||||
|
||||
## Assumptions And Interview Simplifications
|
||||
|
||||
This project is intentionally scoped as an internal single-queue system, not a multi-tenant queue platform. There is no queue CRUD, queue table, or dynamic routing model because the assignment focuses on safe claim semantics and deterministic job state.
|
||||
|
||||
PostgreSQL is used because the assignment requires it and because it makes transactional state easy to inspect during a demo. Redis, BullMQ, Sidekiq-style designs, or a dedicated broker would be better for very high throughput or broader distributed queue use cases.
|
||||
|
||||
The system provides at-least-once execution, not exactly-once execution. Handlers that perform external side effects must be idempotent because a worker can crash after the side effect and before marking the job succeeded.
|
||||
|
||||
The UI is demo and observability oriented. It shows queue pressure, job state, retries, leases, and event logs, but it is not a full production operator console.
|
||||
|
||||
Authentication and authorization are intentionally omitted from the public API for interview simplicity. A production deployment would protect all write endpoints and usually restrict operator actions by role.
|
||||
|
||||
## Production Follow-Ups
|
||||
|
||||
- Add authentication, authorization, and role-based permissions.
|
||||
- Add metrics, alerting, and dashboards for queue depth, age, throughput, failures, and retry rate.
|
||||
- Add event retention, archival, or partitioning so `JobEvent` does not grow forever.
|
||||
- Add rate limits, producer quotas, and backpressure controls.
|
||||
- Add cancellation or cooperative stop support for jobs.
|
||||
- Add dead-letter metadata or a dead-letter inspection view.
|
||||
- Consider Redis or a dedicated broker if throughput or cross-service distribution becomes the main requirement.
|
||||
|
||||
## Run
|
||||
|
||||
```powershell
|
||||
|
||||
Reference in New Issue
Block a user