Este projeto foi desenvolvido para participar da segunda edição da rinha backend !
- Docker
- Java 21+
Foi utilizado como framework base do projeto com as seguintes extençoes
- agroal
- cdi
- flyway
- jdbc-postgresql
- narayana-jta
- resteasy
- resteasy-jsonb
- smallrye-context-propagation
- smallrye-health, vertx].
Compilamos para nativo utilizando utilizando plugin fornecido pelo proprio framework.
O quarkus usa em desenvolvimento com isso não é preciso ter o postgres instalado para rodar em desenvolvimento, o que não é verdade em produção. Para rodar e modo dev basta executar o comando abaixo.
./mvnw compile quarkus:dev
NOTE: Quarkus tem uma interface de desenvolvimento muito boa q pode ser acessada atraves do link http://localhost:8080/q/dev/.
./mvnw package
Este comando vai criar um arquivo quarkus-run.jar
no diretorio target/quarkus-app/
.
Se atente q este não é um über-jar (com as dependencias embutidas) e as dependencias se encontram no diretorio target/quarkus-app/lib/
.
Com isto pode rodar a aplicação utilizando o comando java -jar target/quarkus-app/quarkus-run.jar
.
Caso queira um über-jar:
./mvnw package -Dquarkus.package.type=uber-jar
O über-jar estara no diretorio target com sufixo -runner.jar
para rodar a aplicação execute java -jar target/*-runner.jar
.
Utilizamos este modo de build para gerar a imagem docker utilizada na rinha.
Execute o comando abaixo se tiver a GraalVM devidamente configurada em seu sistema.
./mvnw package -Dnative
Se não tiver a GraalVM utilize o comando abaixo ele ira utilizar um container docker para compilar (Lembre que docker instalado é um requisito)
./mvnw package -Dnative -Dquarkus.native.container-build=true
o executavel nativo estara na pasta target você pode executalo com o seguinte comando ./target/rinha_e2-1.0.0-SNAPSHOT-runner
Temos teste de integração para validar os requisitos da rinha, a maioria dos comandos acima já executam os testes antes de buildar caso não queira executar os testes nos comandos acima use a flag -DskipTests
./mvnw verify
No diretorio load-test/user-files/simulations/rinhabackend/RinhaBackendCrebitosSimulation.scala
esta o arquivo com o script de teste usado no desenvolvimento do projeto, este arquivo é fornecido pela rinha e atualizações nele não são sincronizadas.
Na raiz temos o arquivo executar-teste-local.sh
antes de executalo para inicar os teste de carga é necessario atualizar ele com o caminho para a pasta bin do com tudo configurado basta executar ./executar-teste-local.sh
.