Finally, my first steps on Quarkus πŸš€, as an Spring-boot developper

Daniel Santos - Jul 22 '22 - - Dev Community

Hi everyone πŸ™‹πŸ»β€β™‚οΈ,

We just started trying Quarkus πŸ™

api-transitaires was the first, it's time to do some quick feedback now πŸ“’

πŸ‘‰ First, I know that it's already a 3 years old framework (some npm libs don't live that long), but in some JCompanies the investissement to set up some Spring[-Boot] πŸƒ developers has been challenging, so the replacement has to be valuable (or fin valab)

Why to move from Spring-Boot ?

We have a lot of Sping-Boot apps and we are going forward to k8s in serverless way, so we did some tests with Spring-Native.

It worked πŸ‘, but not so smoothly because of Spring's long history 🏭 which led us to more recent alternatives like πŸ‘‰ Quarkus.

Why this app ?

api-transitaires it's a very basic one-endpoint REST API that serves the list of freight forwarders that manage customs clearance on New-Caledonia πŸ‡«πŸ‡·.

The main goal was to try Quarkus in a end to end way, in our GitHub CI : native app, Docker..

Ok, let's go now..

1# IDE integration πŸ“ - VSCode plugin

I used since almost 2 years VScode, I was happy to discover a Quarkus's plugin who does the job :

  • generate new project : like SprinBoot does πŸ˜‰
  • launch and debug : ok, relies to mvn but it works most of the time πŸ™„.. sometimes it switched off without saying goodbye _(ex: after adding a Quarkus's extension). Otherwise, I don't like that they preferred to use a specific menu for that rather than VSCode's classic "run and debug" πŸ˜’

⭐️ What I appreciate :

  • faster code change / test cycle out-of-the box πŸ“¦ : do the change, switch to browser and the change is already applied (I experienced a refresh the browser twice cycle with Spring-boot Devtools)

☝️ Nice to have :

2# Coding a Rest API πŸ‘¨πŸ»β€πŸ’» - the standard way

While Spring has chosen to make its own annotations (almost a copy of the standard), with Quarkus we go back to the Java standard's ones. Ok, JSR's are not so fancy 🌈, but less intrusive πŸ™.

3# Docs πŸ“– - self sufficient πŸ‘

No need to rely on other documentations to do basic things, Quarkus's guides are in my opinion succinct, practical (getting started style) and well referenced from google πŸ€“.. 1st result is the official one !

Game changing after years of Spring's empty shell getting started guides or JavaDoc style reference documentation πŸ˜΅β€πŸ’«

πŸ‘‰ I used :

4# Fast πŸƒπŸ’¨ - minimum included

  • Lighter & faster, some fresh metrics from a recent migration from Spring-Boot (colisnc-api) :

    • startup time: from 1s8 to 0.5s (is native really needed with Quarkus ? πŸ€”)
    • CI native build : from 14min to 5min
    • Docker Native image size : from 40Mo to 30Mo
  • Minimum included : it's a philosophy and I like it ❀️ (even the yaml configuration is not included : an extension is needed)

5# Native ⚑️ - the way is paved πŸ›£

  • It seems that it's was on the Quarkus cookbook since the beginning, not added at the end : Spring Native is still in experimentation.
  • Light by default : some basic things are not provided by default like SSL protocol support, but it's easy to do quarkus.ssl.native=true

6# Monitoring / dev tooling - Side dishes πŸ₯—

  • less than actuator, but enough in my mind : health, Swagger
  • Nice to have online web dev that gives some basic but useful metrics (as others do since a while, like Symfony πŸ˜‰)

Resources

Cheers 🍻

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .