Skip to content

A performance comparison of various JVM web frameworks for building microservices with Kotlin.

Notifications You must be signed in to change notification settings

vitdebacco/cautious-engine

Repository files navigation

cautious-engine

A work in progress comparison of web frameworks for Kotlin & Go microservices.

The intent of this project is to provide a relative comparison of the performance of basic microservices built using different technologies. It is meant to be an expanded take on Practical Performance Comparison of Spring Boot, Micronaut 1.3, Micronaut 2.0

WIP: Short Term vs. Long Term

  • The initial goal of the project is to support a generic GET endpoint that returns random data generated by Faker.
  • Expand to support CRUD operations backed by a Postgres datastore. The goal will be to compare performance of a more realistic service, as well as sense of how Spring Data JPA, Spring Boot with jOOQ, Micronaut Data JPA, and several other webframeworks using Exposed ORM stack up in a relative sense. This could be expanded to include other ORM/persistence frameworks.

Curent Implementations

Random Address Data

  • Spring Boot 2.x
  • Micronaut 2.x
  • Quarkus
  • Ktor
  • http4k
  • Kooby/Jooby for Kotlin
  • Javalin

Considerations for Future Additions

Longer term thoughts for additions.

  • Jetty vs Netty vs Tomcat vs ?
  • JVM comparisons (AdoptOpenJDK, Corretto, GraalVM, etc)
  • Jackson vs. GSON vs. kotlinx.serialization vs ?
  • Dependency Injection alternatives
  • other languages? (Rust, etc)

Running the Project

  • nav to the root of the preferred project
  • follow each build & run instructions as outlined in the project's README.md
  • in another terminal tab or window, nav to the load-tests
  • start the simulation: ./gradlew gatlingRun --rerun-tasks. See project readme for additional options.

Sources

Practical Performance Comparison of Spring Boot, Micronaut 1.3, Micronaut 2.0

Micronaut Comparisons source on GitHub

Micronaut vs. Quarkus vs. Spring Boot Performance on JDK 14

Kotlin for Server Side

kotlin.link