Slide 1

Slide 1 text

@kevindubois.com @danieloh30.bsky.social Serverless Java in Action: Cloud Agnostic Design Patterns and Tips

Slide 2

Slide 2 text

@kevindubois.com @danieloh30.bsky.social Who We Are! Daniel Oh Developer Advocate, Java Champion @danieloh30.bsky.social Kevin Dubois Developer Advocate, Java Champion @kevindubois.com

Slide 3

Slide 3 text

@kevindubois.com @danieloh30.bsky.social https://www.cncf.io/blog/2023/12/20/cncf-cloud-native-finops-cloud-financial-management-microsurvey/

Slide 4

Slide 4 text

@kevindubois.com @danieloh30.bsky.social Serverless “Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment” -- CNCF Definition, https://www.cncf.io/blog/2018/02/14/cncf-takes-first-step-towards-serverless-computing/

Slide 5

Slide 5 text

@kevindubois.com @danieloh30.bsky.social overprovisioned & wasting resources underprovisioned & unhappy users! Traditional Deployments NOT Serverless

Slide 6

Slide 6 text

@kevindubois.com @danieloh30.bsky.social Serverless Use only what you need! with Serverless

Slide 7

Slide 7 text

@kevindubois.com @danieloh30.bsky.social with serverless workloads Efficient Node Utilization == Less Nodes == Energy + Cost Savings

Slide 8

Slide 8 text

@kevindubois.com @danieloh30.bsky.social Rapid increase in Serverless Adoption in the wild - DataDog Survey Source: https://www.datadoghq.com/state-of-serverless/

Slide 9

Slide 9 text

@kevindubois.com @danieloh30.bsky.social AWS Lambda, Functions... Built around the FaaS components and other services such as API Gateways. It enabled a variety of use cases but it is far from ideal for general computing and with room for improvements. 1.0 ➔ HTTP and other few Sources ➔ Functions only ➔ Limited execution time (5 min) ➔ No orchestration ➔ Limited local development experience FaaS

Slide 10

Slide 10 text

@kevindubois.com @danieloh30.bsky.social

Slide 11

Slide 11 text

@kevindubois.com @danieloh30.bsky.social ● Regulatory changes ● Outages ● Price changes, contract renegotiations ● Other vendor offers better services ● New CIO/CTO ● Shadow IT ● … What if …

Slide 12

Slide 12 text

@kevindubois.com @danieloh30.bsky.social

Slide 13

Slide 13 text

@kevindubois.com @danieloh30.bsky.social Writing cloud agnostic functions

Slide 14

Slide 14 text

@kevindubois.com @danieloh30.bsky.social Example: Java & Serverless

Slide 15

Slide 15 text

@kevindubois.com @danieloh30.bsky.social Supersonic. Subatomic. Java

Slide 16

Slide 16 text

@kevindubois.com @danieloh30.bsky.social Quarkus + Native (via GraalVM) 0.016 Seconds Quarkus + JVM (via OpenJDK) 0.943 Seconds Traditional Cloud-Native Stack 4.3 Seconds Supersonic, Subatomic Java Quarkus + Native (via GraalVM) 12 MB Quarkus + JVM (via OpenJDK) 73 MB Traditional Cloud-Native Stack 136 MB

Slide 17

Slide 17 text

@kevindubois.com @danieloh30.bsky.social github.com/serverless-java-in-action/examples

Slide 18

Slide 18 text

@kevindubois.com @danieloh30.bsky.social quarkus create app myfunction \ -x funqy-amazon-lambda

Slide 19

Slide 19 text

@kevindubois.com @danieloh30.bsky.social DEMO

Slide 20

Slide 20 text

@kevindubois.com @danieloh30.bsky.social

Slide 21

Slide 21 text

@kevindubois.com @danieloh30.bsky.social AWS Lambda, Functions... Built around the FaaS components and other services such as API Gateways. It enabled a variety of use cases but it is far from ideal for general computing and with room for improvements. 1.0 ➔ HTTP and other few Sources ➔ Functions only ➔ Limited execution time (5 min) ➔ No orchestration ➔ Limited local development experience Serverless Containers With the advent of containers & Kubernetes, many frameworks and solutions started to auto-scale containers. Cloud providers created offerings using managed services completely abstracting Kubernetes APIs. 1.5 ➔ Fargate, Cloud Run, Container Instances ➔ Knative, KEDA, etc ➔ Kubernetes based auto-scaling ➔ Microservices and Functions ➔ Easier to debug & test locally ➔ Polyglot & Portable Serverless is evolving...

Slide 22

Slide 22 text

@kevindubois.com @danieloh30.bsky.social

Slide 23

Slide 23 text

@kevindubois.com @danieloh30.bsky.social Knative https://github.com/knative

Slide 24

Slide 24 text

@kevindubois.com @danieloh30.bsky.social Immutable revisions Deploy new features: performing canary, A/B or blue-green testing with gradual traffic rollout with no sweat and following best practices. Any programming language Use any programming language or runtime of choice. From Java, Python, Go and JavaScript to Quarkus, SpringBoot or Node.js. No need to configure number of replicas, or idling. Scale to zero when not in use, auto scale to thousands during peak, with built-in reliability and fault-tolerance. Automatic scaling Simplified developer experience to deploy applications/code on serverless containers abstracting infrastructure & focusing on what matters. Containers made easy Ready for the Hybrid Cloud Truly portable serverless running anywhere Kubernetes runs, that is on-premises or on any public cloud. Leverage data locality and SaaS when needed. prem aws azur e Event Driven Architectures Build loosely coupled & distributed apps connecting with a variety of built-in or third-party event sources or connectors powered by Operators. Knative is an Open Source, Cloud Agnostic Solution to build Serverless and Event Driven Applications on Kubernetes Knative

Slide 25

Slide 25 text

@kevindubois.com @danieloh30.bsky.social $ kn func create -l quarkus myfunc $ kn func deploy $ kn service create myservice --image=xyz github.com/serverless-java-in-action/examples

Slide 26

Slide 26 text

@kevindubois.com @danieloh30.bsky.social AWS Lambda, Functions... Built around the FaaS components and other services such as API Gateways. It enabled a variety of use cases but it is far from ideal for general computing and with room for improvements. 1.0 ➔ HTTP and other few Sources ➔ Functions only ➔ Limited execution time (5 min) ➔ No orchestration ➔ Limited local development experience Serverless Containers With the advent of containers & Kubernetes, many frameworks and solutions started to auto-scale containers. Cloud providers created offerings using managed services completely abstracting Kubernetes APIs. 1.5 ➔ Fargate, Cloud Run, Container Instances ➔ Knative, KEDA, etc ➔ Kubernetes based auto-scaling ➔ Microservices and Functions ➔ Easier to debug & test locally ➔ Polyglot & Portable Integration, State, Workflow Logic The maturity and benefits of Serverless are recognized industry wide and it adds the missing parts to make pattern suitable for general purpose workloads and used on the enterprise. 2.0 ➔ Basic state handling ➔ Enterprise Integration Patterns ➔ Serverless Logic Workflows ➔ Advanced Messaging Capabilities ➔ Blended with your PaaS ➔ Enterprise-ready event sources ➔ Solutions and outcome focused

Slide 27

Slide 27 text

@kevindubois.com @danieloh30.bsky.social

Slide 28

Slide 28 text

@kevindubois.com @danieloh30.bsky.social Knative Eventing Eventing is a set of APIs for routing events from Producers to Consumers (known as Sinks) CloudEvent specification allows for the creation of Serverless components that are driven by Event rather than Traffic

Slide 29

Slide 29 text

@kevindubois.com @danieloh30.bsky.social CloudEvents CNCF graduated project - https://cloudevents.io/ Provides a common event schema => Interoperability, portability Extensible through extension attributes SDKs for different programming languages Protocol-agnostic (HTTP, AMQP, MQTT, …) Wide adoption

Slide 30

Slide 30 text

@kevindubois.com @danieloh30.bsky.social Knative Eventing Usage Patterns Source to Sink

Slide 31

Slide 31 text

@kevindubois.com @danieloh30.bsky.social Knative Eventing Usage Patterns Channel and Subscription

Slide 32

Slide 32 text

@kevindubois.com @danieloh30.bsky.social Knative Eventing Usage Patterns Broker and Trigger

Slide 33

Slide 33 text

@kevindubois.com @danieloh30.bsky.social Who wants more demos?

Slide 34

Slide 34 text

@kevindubois.com @danieloh30.bsky.social

Slide 35

Slide 35 text

@kevindubois.com @danieloh30.bsky.social

Slide 36

Slide 36 text

@kevindubois.com @danieloh30.bsky.social github.com/kdubois/CamelQuarkusVoter

Slide 37

Slide 37 text

@kevindubois.com @danieloh30.bsky.social 37 Serverless Logic: Building an application by orchestrating services and events EXT. SERVICE MICRO SERVICE MICRO SERVICE MICRO SERVICE EXT. SERVICE MICRO SERVICE MICRO SERVICE EXT. SERVICE MICRO SERVICE MANAGED SERVICE MICRO SERVICE F F F F F F F F MICRO SERVICE +

Slide 38

Slide 38 text

@kevindubois.com @danieloh30.bsky.social Serverless + AI knative.dev/docs/about/case-studies/deepc/ github.com/kserve/kserve Model Context Protocol (MCP) quarkus.io/blog/mcp-server/

Slide 39

Slide 39 text

@kevindubois.com @danieloh30.bsky.social Free Developer e-Books & Tutorials! developers.redhat.com/eventtutorials

Slide 40

Slide 40 text

@kevindubois.com @danieloh30.bsky.social Thank you! youtube.com/@thekevindubois | bit.ly/danielohtv linkedin.com/in/kevindubois | @daniel-oh-083818112 github.com/kdubois | @danieloh30 @kevindubois.com | @danieloh30.bsky.social slides