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

Cloud Native Serverless Java with Quarkus & GraalVM on AWS Lambda

Cloud Native Serverless Java with Quarkus & GraalVM on AWS Lambda

Niko Köbler

May 26, 2020
Tweet

More Decks by Niko Köbler

Other Decks in Programming

Transcript

  1. CLOUD NATIVE SERVERLESS JAVA
    W/ QUARKUS & GRAALVM ON AWS LAMBDA
    NIKO KÖBLER (@DASNIKO)

    View Slide

  2. ABOUT ME
    ▸ Freelance Consultant/Architect/Developer/Trainer @ www.n-k.de
    ▸ Doing stuff with & without computers, writing Software, > 20 yrs
    ▸ Co-Lead of JUG DA (https://www.jug-da.de / @JUG_DA)
    ▸ Speaker at international Tech Conferences
    ▸ Author of „Serverless Computing in AWS Cloud“
    serverlessbuch.de
    ▸ Twitter: @dasniko
    SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA

    View Slide

  3. THE APPLICATION

    View Slide

  4. SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA
    THE APPLICATION

    View Slide

  5. SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA
    JUG DA SERVERLESS REGISTRATION (BEFORE)

    View Slide

  6. SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA
    THE LEGACY CODE

    View Slide

  7. QUARKUS
    quarkus.io

    View Slide

  8. GRAALVM
    graalvm.org

    View Slide

  9. AWS LAMBDA
    aws.amazon.com/lambda

    View Slide

  10. QUARKUS
    Tooling
    RESTEasy as JAX-RS Implementation
    AWS Lambda HTTP Extension

    View Slide

  11. QUARKUS
    HIGHLANDER
    MODE

    View Slide

  12. LET’S GET
    FUNQY
    API to write functions deployable to various FaaS environments
    (like AWS Lambda, Azure Functions, Knative, …)

    View Slide

  13. LET’S GET
    FUNQY
    API to write functions deployable to various FaaS environments
    (like AWS Lambda, Azure Functions, Knative, …)

    View Slide

  14. YATE!?
    Yet Another Templating Engine

    View Slide

  15. QUARKUS
    QUTE
    QUarkus Templating Engine

    View Slide

  16. QUARKUS
    QUTE
    QUarkus Templating Engine

    View Slide

  17. SECURITY
    AWS Lambda w/ API Gateway
    =
    HTTP(S) handling in API Gateway,
    Lambda knows only „Events“

    View Slide

  18. SECURITY
    Thank you, Mr. Highlander…
    Polyglott programming to the rescue!

    View Slide

  19. GOING NATIVE
    $ mvn package -Pnative
    Compile Errors..!

    View Slide

  20. GOING NATIVE
    AWS Lib for DynamoDB - Quarkus Extension \o/ (AWS API v2)
    AWS Lib for Simple-Email-Service - no Quarkus Extension :-(

    View Slide

  21. WORKS
    ON MY
    MACHINE!?

    View Slide

  22. AWS LAMBDA
    LAMBDA LAYERS
    CUSTOM RUNTIME API

    View Slide

  23. HTTPS!
    -Djavax.net.ssl.trustStore=/opt/graalvm/security/cacerts
    -Djavax.net.ssl.trustAnchors=/opt/graalvm/security/cacerts
    -Djava.library.path=/opt/graalvm/amd64

    View Slide

  24. REFLECTION!!!
    reflection-config.json

    View Slide

  25. WE ARE DONE!!!
    0
    1000
    2000
    3000
    4000
    MEMORY ALT (MB) MEMORY NEU (MB) COLD STARTUP ALT (MS) COLD STARTUP NEU (MS)
    Repository: https://github.com/jugda/registration
    Website: https://www.jug-da.de

    View Slide

  26. SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA
    JUG DA SERVERLESS REGISTRATION (BEFORE)

    View Slide

  27. SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA
    JUG DA SERVERLESS REGISTRATION (AFTER)

    View Slide

  28. SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA
    CONCLUSION

    View Slide

  29. THANK YOU.
    ANY QUESTIONS?
    Slides: https://speakerdeck.com/dasniko
    Niko Köbler | www.n-k.de | [email protected] | @dasniko
    SERVERLESS JAVA W/ QUARKUS & GRAALVM ON AWS LAMBDA

    View Slide