Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Quarkus Deep Dive HOWL - RivieraDev

Quarkus Deep Dive HOWL - RivieraDev

Kevin Dubois

July 10, 2023
Tweet

More Decks by Kevin Dubois

Other Decks in Programming

Transcript

  1. Kevin Dubois Who’s on stage today? 🤘 Principal Developer Advocate

    at Red Hat 🤘 International Speaker 🤘 18+ years professional software development experience 🤘 Speak English, Dutch, French, Italian 🤘 Open Source Contributor (Quarkus, Camel, Knative, ..) 🤘 Open Source Community Member (Belgian JUG, Belgian CNCF chapter) @[email protected] youtube.com/@thekevindubois linkedin.com/in/kevindubois @kevindubois.com
  2. Eric Deandrea Who’s on stage today? 🤘 23+ years software

    development experience 🤘 Contributor to Open Source projects 🤘 Quarkus 🤘 Spring Boot 🤘 Spring Framework 🤘 Spring Security 🤘 Spring Session 🤘 Build & deliver cloud-native development training programs 🤘 Published author @edeandrea
  3. Upcoming Sessions 🤘 A Story about Serverless Camels Living in

    Containers ◦ Tuesday 15:00 Amphi 139 🤘 Avoiding Common Pitfalls with Modern Microservices Testing ◦ Tuesday 18:10 Amphi 139 🤘 Quarkus for Spring Developers ◦ Wednesday 13:30 Amphi 139 🤘 Next-gen CI/CD with GitOps and Progressive Delivery ◦ Wednesday 15:40 Amphi 139
  4. • How Quarkus enables modern Java development & the Kubernetes-native

    experience • Introduce familiar Spring concepts, constructs, & conventions and how they map to Quarkus • Emphasis on testing patterns & practices https://red.ht/quarkus-spring-devs Free copy (while they last)! Come see me at the Red Hat booth! 15:20 Wednesday!
  5. Build Time Runtime Packaging (maven, etc) gradle…) Load config file

    from file system Parse it Classpath scanning to find annotated classes Attempt to load class to enable/disable features Build its model of the world. Start the management (thread, pool…) @ @ </> How Does “Traditional Java” Start?
  6. Resources Optimization Trend (New & Lighter Runtimes) Building blocks: Platform

    resources Java-based runtime non-Java runtime 1 non-Java runtime 2 New blocks Improved utilization
  7. Build Time Runtime @ @ </> The Quarkus Way Runtime

    Build Time @ @ </> Package model Build Time Runtime @ @ </>
  8. Quarkus + Native (via GraalVM) 12 MB Quarkus + JVM

    (via OpenJDK) 73 MB Traditional Cloud-Native Stack 136 MB Quarkus + Native (via GraalVM) 0.016 Seconds Quarkus + JVM (via OpenJDK) 0.943 Seconds Traditional Cloud-Native Stack 4.3 Seconds Supersonic Subatomic Java
  9. Resources Optimization Trend (Quarkus making Java Relevant) Building blocks: Platform

    resources Java-based runtime non-Java runtime 1 non-Java runtime 2 Quarkus runtime high application density “Lufthansa Technik AVIATAR experiences significant cloud resources savings by moving to Kubernetes-native Quarkus” - Quarkus.io
  10. 🤘 Red Hat sits on the GraalVM advisory board 🤘

    Red Hat contributes to GraalVM ◦ Debugging support ◦ ARM support ◦ Java Flight Recorder 🤘 Quarkus is part of the GraalVM test suite Native Compilation
  11. Command Line Job Github App Cloud / Container Native Serverless

    & Functions Micro services EDA Kube Operator Traditional Apps CRUD Monoliths GitHub Actions Admin Tools Reactive Systems
  12. Quarkus 3 Highlights PERFORMANCE Hibernate ORM 6 STANDARDS Java 11

    & 17 Aligns with MicroProfile 6 & Jakarta EE Core Profile 10 Kubernetes DevService Quarkus CLI deploy to Kubernetes KUBE-NATIVE PRODUCTIVITY Pact contract testing support New Dev UI Azure Functions extension Learn more at Quarkus.io/quarkus3
  13. The importance of density JVM Quarkus Spring Boot Ratio (Quarkus

    / SB) Framework version 2.7.5.ER4 2.6.3 Build time (s) 6.69 17.65 37.92% Av. RSS after startup (MB) 506.56 913.01 55.48% Av. time to 1st req (ms) 2,287.67 4,653.67 49.16% Av. RSS after 1st req (MB) 534.49 973.8 54.89% Av. throughput (req/sec) 28,904.46 10,758.41 268.67% Av. RSS for max throughput (MB) 1,933.16 2,578.3 74.98% Max throughput density (req/sec/MB) 14.97 4.54 329.8% Native Quarkus Spring Boot Ratio (Quarkus / SB) Framework version 2.7.5.ER4 2.6.3 Build time (s) 89.25 213.78 41.75% Av. RSS after startup (MB) 58.3 160.17 36.4% Av. time to 1st req (ms) 37.33 175.33 21.29% Av. RSS after 1st req (MB) 63.79 167.4 38.1% Av. throughput (req/sec) 21,683.95 9,045.15 239.73% Av. RSS for max throughput (MB) 413.63 599.89 68.95% Max throughput density (req/sec/MB) 53.73 15.13 355.19% Some real numbers (8 cores, 12GB RAM, GraalVM 21.3.0.r11)
  14. “We went from 1 min startup times to 400 ms.”

    RH Press Release Community “We became increasingly worried about resource consumption that Spring Boot was having while being deployed on the Kubernetes cluster… It became increasingly cumbersome to find ways to circumvent the methodology we were using just to squeeze every little bit of performance out of Spring Boot” - Christos Sotiriou DXL Backend Chapter Lead, Vodafone Greece Information Week Community “We could run 3x denser deployments without sacrificing availability and response times of service.” “Quarkus is close to what our developers are already doing with Spring and it’s familiar to them. This is a big benefit” Community “Before we introduced Quarkus, many of our customers had started to look at alternative stacks like Go and node.js to improve performance and efficiency. These customers were weary of selecting a new language and having to hire new developers or retrain their existing Java developers.” - Arijit Mazumdar “There was a low learning curve with Quarkus. It took one of our developers one week to get up to speed on Quarkus and another week to migrate a Spring application to Quarkus.” - Arijit Mazumdar “Quarkus and the Spring API compatibility reduced the migration time and complexity which is critically important for our customers.” - Arijit Mazumdar Community Orgs experiencing Quarkus Joy https://quarkus.io/blog/tag/user-story
  15. Orgs experiencing Quarkus Joy “using Spring with AWS Lambda would

    have been prohibitive because the startup time of Spring in AWS Lambda is too big from my research” - Dennis Baerten “As costs increase, this is when the benefit of using Quarkus will be experienced due to its more efficient use of cloud resources and fast startup time compared to plain Java and Spring Boot” - Dennis Baerten “It took me about 3 days to get familiar with the Quarkus stack” - Dennis Berten, Spring Developer Blog “Some of Payair’s developers had mainly Spring experience, we were concerned that it would be difficult for them to “switch sides”. It turned out that our fear of the unknown was completely unfounded. Quarkus leverages some good old Jakarta EE standards that all Java developers are familiar with. We did not have to learn a bunch of new APIs.” - Hubert Lewandowski “As a long term Spring developer I realized that Spring is slowly becoming the very thing it swore to destroy. The initial premises of Spring (which basically can be summed up as a lightweight alternative to Jakarta EE) are way past the expiry date now. Spring is the undisputed heavyweight champion that can handle everything you imagine but is not your best option for fast and light services. And that applies to Spring Boot as well. - Hubert Lewandowski Blog “When you adopt Quarkus, you will be productive from day one since you don’t really need to learn new technologies.” -TalkDesk Blog “After deploying, we found that Quarkus used about 15% of the CPU, 12% of the memory compared to Spring Boot. So far, we are sticking with Quarkus!” - Sam Dacanay, Lead Software Engineer Blog https://quarkus.io/blog/tag/user-story
  16. Had a good time? let everyone know! @kevindubois @edeandrea #quarkusrocks

    Want to know more? Links are in the jam doc below Web quarkus.io Talk quarkus.io/community Twitter @quarkusio More developers.redhat.com dn.dev/quarkus-tutorial
  17. Start exploring in the OpenShift Sandbox. Learn containers, Kubernetes, and

    OpenShift in your browser. developers.redhat.com/developer-sandbox Try Red Hat's products and technologies without setup or configuration.
  18. Upcoming Sessions 🤘 A Story about Serverless Camels Living in

    Containers ◦ Tuesday 15:00 Amphi 139 🤘 Avoiding Common Pitfalls with Modern Microservices Testing ◦ Tuesday 18:10 Amphi 139 🤘 Quarkus for Spring Developers ◦ Wednesday 13:30 Amphi 139 🤘 Next-gen CI/CD with GitOps and Progressive Delivery ◦ Wednesday 15:40 Amphi 139