This README documents the state of the project at the v6.0-final tag. This phase concludes the project by introducing a fully automated, end-to-end benchmark orchestration and data analysis suite.
The primary deliverable of this phase is a set of reproducible scripts that allow anyone to regenerate the project's complete findings from raw performance data to final graphical report with just two commands. This includes an automated methodology for capturing pre- and post-load memory usage for every communication pattern.
- Backend: Java 21 & Quarkus 3.x
- Runtimes: JVM, GraalVM Native
- Containerization: Docker & Docker Compose
- Benchmark Tooling:
k6
for HTTP-based protocols- Custom Java Benchmark Client for gRPC
- Orchestration & Analysis: Bash,
gnuplot
This phase provides the tooling to reproduce the project's complete set of benchmark results and visualizations.
- Docker and Docker Compose
- A shell environment (Bash, Zsh)
gnuplot
(brew install gnuplot
orsudo apt-get install gnuplot
)
Ensure you are on the correct version of the code.
git clone https://github.com/apenlor/quarkus-communication-patterns-lab.git cd quarkus-communication-patterns-lab git checkout v6.0-final
This is the master orchestration script. It will perform all the following actions automatically:
- Tear down any existing Docker environment.
- Run the startup time benchmarks for both JVM and Native runtimes.
- Start the main
docker-compose
services. - Execute all performance benchmarks (REST, SSE, WebSockets, gRPC) against both runtimes.
- Capture pre- and post-load memory snapshots for every test.
- Tear down the Docker environment when finished.
This command will take several minutes to complete.
./scripts/run-all-benchmarks.sh
Upon completion, the bench-clients/results/raw/
directory will be fully populated with all log files.
This script reads all the raw log files and consolidates them into a single, clean summary.csv
file.
./scripts/collect-results.sh
The final dataset will be available at bench-clients/results/summary.csv
.
This script reads the summary.csv
file and uses gnuplot
to generate a full set of professional bar charts visualizing the results.
./scripts/generate-graphs.sh
All PNG graph files will be saved in docs/benchmarks/graphs/
.
- ✅ Phase 1.0: The REST Baseline
- ✅ Phase 2.0: Server-Sent Events
- ✅ Phase 3.0: WebSockets
- ✅ Phase 4.0: gRPC
- ✅ Phase 5.0: RSocket (Excluded)
- ✅ Phase 6.0: Final Analysis - (This is the current and final phase)