Skip to content

fugerit-org/graalkus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

graalkus

Keep a Changelog v1.1.0 badge license code of conduct Quality Gate Status Coverage Docker images

Java runtime version Java build version Apache Maven

Documentation

NOTE: The documentation (HTML, PDF and slides) is produced with a doc-as-code approach. Only my IDE and GIT have been used. No office automation tools were harmed in the making of this project 😉.

Here you can find project documentation index published through GitHub pages.

Introduction slides are available thanks to Slidev :

Slideshow

While AsciiDoc full documentation is here :

HTML - Documentation PDF - Documentation

Quickstart

Requirement :

  • maven 3.9.x
  • java 21+ (GraalVM for native version)

NOTE: All benchmarks has been run on Oracle GraalVM 23.

  1. Verify the app
mvn verify
  1. Start the app
mvn quarkus:dev
  1. Try the app

Open the swagger-ui

Test available paths (for instance : /doc/example.md)

Native version

If you picked only native modules, you should be able to build and run the AOT version (GraalVM 21+ needed).

Further documentation :

  1. Build and verify
mvn package -Dnative
  1. Start
./target/graalkus-*-runner

Container deployment

Requirement :

  • Container environment (Docker or Podman)

Note: It is recommended to install the latest versions of Docker Desktop or Podman Desktop.

Pick a docker compose file (inside the src/main/docker) and run by using docker compose or podman compose. Se example below:

# If you have a docker environment
# This syntax of docker compose is available from then Docker Desktop 3.4
docker compose -f src/main/docker/docker-compose.yml up -d

# If you have a podman environment
# This syntax of podman compose is available from the Podman 4.0
podman compose -f src/main/docker/docker-compose.yml up -d

NOTE: both amd64 and arm64 (including macOS) pre-built images are available.

Run benchmark with siege

Requirement :

  • siege
  • psrecord (optional for plotting)

Start the application and run :

./src/main/script/bench-graph-siege.sh 

The result output file is in the target directory.

Run benchmark with h2load

Requirement :

  • h2load
  • psrecord (optional for plotting)

Start the application and run :

./src/main/script/bench-graph-h2-load.sh 

The result output file is in the target directory.

Run benchmark on different url

Default for benchmark is to run on http://localhost:8080.

To run on a different url use the -u parameter, for instance :

./src/main/script/bench-graph-h2-load.sh -u http://localhost:8081

The result output file is in the target directory.

Run benchmark with plotting

To run benchmark with plotting, psrecord should be installed.

Build the application without launching it, and run :

mvn install -Dnative
./src/main/script/bench-graph-h2-load.sh -m AOT

or

mvn package
./src/main/script/bench-graph-h2-load.sh -m JIT

The result output file is in the target directory.

Build the documentation

Requirement :

  • NodeJS 20+
  • Mermaid CLI

AsciiDoc documentation

AsciiDoc source folder is located at :

src/main/docs/asciidoc

It is possible to build HTML and PDF documentation running :

mvn install -Pdocs

Output will be in target/site directory.

Slidev slideshow

Slidev source folder is located at :

src/main/docs/slidev/graalkus

To run the slideshow in dev mode just :

cd src/main/docs/slidev/graalkus
npm install
npm run dev

For a production build :

mvn clean install -Pslidev
serve src/main/docs/slidev/graalkus