DEV Community

Cover image for Finally, my first steps on Quarkus 🚀, as an Spring-boot developper
Daniel Santos for opt-nc

Posted on

Finally, my first steps on Quarkus 🚀, as an Spring-boot developper

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 🍻

Oldest comments (7)

Collapse
 
adriens profile image
adriens

@dougniel : can you create a series Called Quarkus ?

Collapse
 
lschaeffer313 profile image
Laurent Schaeffer

Thank you for your feedback, i think quarkus will be a great tool to use in many project (like with knative 😉).
Can’t wait to see the next project you’ll do in quarkus 🤩.

Collapse
 
adriens profile image
adriens

AH AH yes @lschaeffer313 , there are some really cool contents coming from @mbarre

For knative, you have these two nice contents :

and

Collapse
 
adriens profile image
adriens
Collapse
 
adriens profile image
adriens

FYI @dougniel if you have any question :

Collapse
 
adriens profile image
adriens
Collapse
 
adriens profile image
adriens

Some cool event in the pipe: