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

Dapr and Spring Boot - Solving the Challenges of Distributed Systems

Dapr and Spring Boot - Solving the Challenges of Distributed Systems

Imagine you are tasked to build the most straightforward application in a distributed system. How will your application consume external services? Which strategy will you use to ensure resilient interactions with other applications in the system? Will data consistency be guaranteed even when transactions cross application boundaries? Are you making your developer experience worse by dealing with all the complexity?

We’ve all been there. This session will demonstrate the combined power of Dapr and Spring Boot for handling the most common distributed application challenges. Dapr is an open-source, cloud-native project designed to decouple application concerns from the underlying infrastructure through convenient APIs, enabling developers to consume several capabilities without extra cognitive load.

Through live coding and hands-on demonstrations, Thomas and Mauricio will show how Dapr integrates with Spring Boot and helps you focus on writing the business logic rather than creating new solutions for recurring cloud-native patterns.

Developer experience will be paramount. It’s a promise: no YAML and no Kubernetes will be needed to develop your applications! Here’s the catch: once you’re done, your applications will run across different environments and configurations (such as Kubernetes or a cloud platform). They will integrate with other services in the system without any code change. Will we reach the goal? Join us and find out!

Thomas Vitale

June 04, 2024
Tweet

More Decks by Thomas Vitale

Other Decks in Technology

Transcript

  1. Mauricio Salatino & Thomas Vitale Spring I/O Barcelona May 30th,

    2024 Dapr and Spring Boot Solving the Challenges of Distributed Systems @vitalethomas @salaboy
  2. diagrid.io • Software Engineer and CNCF Ambassador. • Author of

    “Platform Engineering on Kubernetes” (Manning). • @DaprDev @KnativeProject @KeptnProject Mauricio Salatino salaboy.com @Salaboy
  3. Systematic • Software Engineer • CNCF Ambassador, Oracle ACE Pro,

    Testcontainers Community Champion • Author of “Cloud Native Spring in Action” (Manning). • OSS contributor (Java, Spring, Cloud Native Technologies) Thomas Vitale thomasvitale.com @vitalethomas
  4. Challenges That you will phase Distributed Systems are complex Developer

    Productivity Su ff ers writing YAML Teams Expertise to a whole new level @salaboy @vitalethomas https://www.diagrid.io/blog/dapr-for-spring-boot
  5. But if you can do that.. you can also do

    this @salaboy @vitalethomas
  6. But if you can do that.. you can also do

    this @salaboy @vitalethomas
  7. What about local development? I don’t want to deploy to

    Kubernetes… @salaboy @vitalethomas
  8. This is good … But can we make it more

    Bootiful? @salaboy @vitalethomas
  9. How do we do this in Spring? Spring Data ->

    https://github.com/spring-projects/spring-data-keyvalue @salaboy @vitalethomas
  10. How do we do this in Spring? Spring Data ->

    https://github.com/spring-projects/spring-data-keyvalue @salaboy @vitalethomas
  11. How do we do this in Spring? Spring Kafka ->

    https://github.com/spring-projects/spring-kafka @salaboy @vitalethomas
  12. How do we do this in Spring? Spring Pulsar ->

    https://github.com/spring-projects/spring-pulsar @salaboy @vitalethomas
  13. Outbox Pattern * Produce an event every time we store

    some data * Do it transactionally * If for some reason storing data fails, 
 the event shouldn’t be produced @salaboy @vitalethomas
  14. Durable Exections / Workflows * Sometimes we need more than

    just calling X services in a sequence * We want to make sure that: * If things fail we have a backup plan like: custom retries, circuit breakers and domain-speci fi c logic hooks * Support for long running and stateful interactions, for example waiting for a human input that might be on holidays * That we have compensation logic to undo operations @salaboy @vitalethomas
  15. What about Deployments? The platform team takes care of wiring

    up the available infrastructure @salaboy @vitalethomas