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

Event-driven and serverless with Spring Cloud and Spring Native (JBCN 2021)

Event-driven and serverless with Spring Cloud and Spring Native (JBCN 2021)

Applications in a microservices architecture can communicate with each other in different ways. Adopting an event-driven paradigm based on asynchronous messaging provides services a way of communicating while reducing runtime coupling. Functions are a natural way of implementing event-driven business logic in terms of suppliers, processors, and consumers. Furthermore, when going serverless, we aim at executables with instant startup and efficiency. Enter Spring. Spring Cloud Function favors using the functional programming paradigm to implement your business logic and provides useful features to build data pipelines, including type conversion and function composition. Functions can be exposed through different options (like web endpoints or message channels), and adapters are available to run them on platforms like Knative, AWS Lambda, Azure Functions, and GCP Functions. Spring Cloud Stream integrates your functions with messaging systems like RabbitMQ and Kafka without requiring any change to your code. Finally, Spring Native lets you compile your applications as native executable using GraalVM and providing instant startup, instant peak performance, and reduced memory consumption.

C20b9829daddbee16e359b0a750660a5?s=128

Thomas Vitale

July 23, 2021
Tweet

Transcript

  1. Thomas Vitale JBCN Conference July 23rd, 2021 Event-driven and serverless

    With Spring Cloud and Spring Native @vitalethomas
  2. Thomas Vitale • Senior Software Engineer at Systematic, Denmark. •

    Spring, Cloud Native, DevOps, Kubernetes, Application Security. • Author of “Cloud Native Spring in Action” (Manning). About Me
  3. Serverless Dynamic scaling Request-driven Cost optimization thomasvitale.com @vitalethomas thomasvitale.com @vitalethomas

  4. Spring Native thomasvitale.com @vitalethomas

  5. Spring Native Native executables with GraalVM Slower Heavier Build Instant

    Startup Reduced Memory Consumption Instant Peak Performance Fewer Runtime Optimizations thomasvitale.com @vitalethomas
  6. Functions thomasvitale.com @vitalethomas thomasvitale.com @vitalethomas

  7. Functional Programming Paradigm Java 8 Functional Interfaces thomasvitale.com @vitalethomas Supplier<O>

    Function<I,O> Consumer<I>
  8. Spring Cloud Function thomasvitale.com @vitalethomas

  9. Spring Cloud Function Business logic as functions thomasvitale.com @vitalethomas Transparent

    Type Conversion Function Arity Function Composition Reactive Support JAR Functions
  10. Spring Cloud Function Deployment and integrations thomasvitale.com @vitalethomas Knative CloudEvents

    RSocket Azure Functions Google Cloud Functions AWS Lambda
  11. Event-Driven thomasvitale.com @vitalethomas thomasvitale.com @vitalethomas

  12. Spring Cloud Stream thomasvitale.com @vitalethomas

  13. Spring Cloud Stream Event-driven microservices thomasvitale.com @vitalethomas Integration with event

    brokers Bindings with functions Publish Subscribe Consumer Groups Partitions
  14. Destination Binder Destination Binding Kafka RabbitMQ Function Spring Boot Application

    Destination Binding Spring Cloud Stream - Application Model thomasvitale.com @vitalethomas
  15. Thomas Vitale JBCN Conference July 23rd, 2021 Event-driven and serverless

    With Spring Cloud and Spring Native @vitalethomas