What it does
BenchLab schedules implementations against datasets and returns comparable metrics. The API persists queued state; a Go worker executes the costly work and returns results through an authenticated callback.
Architecture and data flow
React Dashboard
→
Spring API
→
RabbitMQ
run request
run request
→
Go Worker
→
Docker Runner
language image
language image
→
Results Callback → API
API data services
PostgreSQL: runs, metrics, artifacts · Redis: application cache
Execution boundary
Worker token protects callback · Docker socket is an explicit host-privilege trade-off
Benchmark methodology
Comparable runs
Stable datasets and bounded resources.
Stable datasets and bounded resources.
Warmups and repeats
Iterations reduce measurement noise.
Iterations reduce measurement noise.
Median results
Measured samples aggregate by median.
Measured samples aggregate by median.
Output validation
Measured output is checked for determinism.
Measured output is checked for determinism.
Trade-off
RabbitMQ separates API response time from execution. Docker containers isolate submitted programs, but a Docker-socket mount is a meaningful security boundary; a production evolution would use hardened remote runners.