2.8 KiB
2.8 KiB
Workers Processing Architecture
This folder contains documentation for the enterprise-grade backtest processing architecture using a database queue pattern with separate API and Compute worker clusters.
Overview
The architecture separates concerns between:
- API Server: Handles HTTP requests, creates jobs, returns immediately (fire-and-forget)
- Compute Workers: Process CPU-intensive backtest jobs from the database queue
- Database Queue: Central coordination point using PostgreSQL
Documentation Files
-
- Complete system architecture diagram
- Component relationships
- External service integrations
-
- Sequence diagram of request flow
- User request → Job creation → Processing → Status polling
-
- Detailed job processing workflow
- Worker polling, job claiming, semaphore control
-
- Entity relationship diagram
- Database schema for job queue
- Key indexes and relationships
-
- Production deployment topology
- Load balancing, clustering, monitoring
-
- Concurrency control mechanisms
- Semaphore-based limiting
- Capacity calculations
-
- Monorepo project organization
- Shared projects and dependencies
Key Features
- ✅ No Timeouts: Fire-and-forget pattern with polling
- ✅ Scalable: Horizontal scaling of both API and Compute clusters
- ✅ Reliable: Jobs persist in database, survive restarts
- ✅ Efficient: Dedicated CPU resources for compute work
- ✅ Enterprise-Grade: Handles 1000+ users, priority queue, health checks
Architecture Principles
- Separation of Concerns: API handles requests, Compute handles CPU work
- Database as Queue: PostgreSQL serves as reliable job queue
- Shared Codebase: Monorepo with shared business logic
- Resource Isolation: Compute workers don't interfere with API responsiveness
- Fault Tolerance: Jobs survive worker failures, can be reclaimed
Capacity Planning
- Per Worker: 6 concurrent backtests (8-core machine)
- 3 Workers: 18 concurrent backtests
- Throughput: ~1,080 backtests/hour
- 1000 Users × 10 backtests: ~9 hours processing time
Next Steps
- Create
Managing.Computeproject - Implement
BacktestJobentity and repository - Create
BacktestComputeWorkerbackground service - Update API controllers to use job queue pattern
- Deploy compute workers to dedicated servers