Skip to content

Medir rendimiento Java vs Go con Jmeter para servicios HTTP. En ambas aplicaciones se utiliza Docker y persistencia con Postgres.

Notifications You must be signed in to change notification settings

janusky/java-vs-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

java-vs-go 2019/03/26

Se pone a disposición dos aplicaciones app-go y app-java desplegables en contenedores Docker.

Objetivo

Medir rendimiento Java vs Go con Jmeter para servicios HTTP.

Descripción

Se plantea contar con dos aplicaciones similares pero con diferente lenguaje, siendo estos java y go, conectadas a un motor de base de datos Postgresql.

Las aplicaciones deben exponer servicios HTTP para ser consumidos con la herramienta Jmeter, la cual permitirá observar el rendimiento.

Prueba

Es recomendable descargar la el proyecto dentro de go/src para ejecutar sin inconvenientes la aplicación app-go

# Descargar proyecto en path go/src
cd ~/go/src
git clone https://github.com/janusky/java-vs-go.git github.com/janusky/java-vs-go
cd github.com/janusky/java-vs-go

Al ejecutarse jmeter debe indicarse los parámetros

  • -JHOST=localhost
  • -JPORT=[8080/8000]
  • -JNUM_USERS=1

NOTA: Para aplicación golang el puerto por defecto es 8000, a diferencia de la aplicación java que es 8080.

# Ejecutar jmeter (8000 o 8080)
jmeter -JHOST=<host> -JPORT=<port> -JNUM_USERS=1 -n -t app-test.jmx -l results.csv

Prueba con golang

cd ~/go/src/github.com/janusky/java-vs-go/app-go
# Up app-go (docker-compose up -d)
docker-compose up -d --build

cd ../test
# Ejecutar jmeter
jmeter -JHOST=localhost -JPORT=8000 -JNUM_USERS=100 -n -t app-test.jmx -l resultsGO.csv -j jmeterGO.log

# END compose: cd ../app-go o cd ~/go/src/github.com/janusky/java-vs-go/app-go
docker-compose down -v

Prueba con java

cd ~/go/src/github.com/janusky/java-vs-go/app-java
# Up app-go (docker-compose up -d)
docker-compose up -d --build

cd ../test
# Ejecutar jmeter
jmeter -JHOST=localhost -JPORT=8080 -JNUM_USERS=100 -n -t app-test.jmx -l resultsJAVA.csv -j jmeterJAVA.log

Conclusión

Se hace difícil demostrar que Go es mejor, porque el tiempo de ejecución en las peticiones es determinado por la conexión a la base de datos utilizada.

Si se necesita una aplicación para resolver un modelo de negocio amplio, el cual requiere intervención de muchos desarrolladores, usaría Java. Si el desarrollo es pequeño y se pretende hacer simple y rápido usaría Go.

Siempre utilizaría Go para los casos de aplicaciones desktop, y aquellos donde el motor de base de datos no sea el determinate en las métricas resultantes.

Referencias

About

Medir rendimiento Java vs Go con Jmeter para servicios HTTP. En ambas aplicaciones se utiliza Docker y persistencia con Postgres.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published