Dapr and Spring Boot - Solving the Challenges of Distributed Systems by M. Salatino / T. Vitale

Spring I/O
4 Jun 202446:21

Summary

TLDRThe presentation explores the complexities of building distributed systems and introduces Dapper, a project that simplifies cloud-native application development. The speakers demonstrate using Dapper with Spring Boot to handle challenges like data storage, messaging, and service connectivity without deep infrastructure knowledge. They showcase a live demo of a voting application, discuss developer experience, and highlight how Dapper can abstract infrastructure management, allowing developers to focus on business logic. The talk concludes with a Q&A and a raffle using a workflow implemented with Dapper.

Takeaways

  • 😀 The presentation focuses on solving challenges in distributed systems, discussing tools like Dapper and Spring Boot.
  • 🔧 Distributed systems are complex and difficult to build, maintain, and operate, necessitating team training and expertise.
  • 📈 Scaling up teams with the right expertise for building distributed systems is a significant challenge.
  • 💾 The use of YAML in cloud-native spaces is highlighted as potentially hindering developer productivity due to configuration overhead.
  • 🐳 The presentation includes a demo of a simple application using Docker, Redis, and RabbitMQ, extended for real-time updates with an event-driven architecture.
  • 👋 Audience interaction is sought through a live demo involving a voting application, emphasizing the complexity of distributed systems.
  • 👤 The speakers, Mauricio Salatino and Thomas Vitale, introduce themselves and their backgrounds in platform engineering and cloud-native Java applications.
  • 📚 Mauricio has written a book on 'Platform Engineering on Kubernetes', and Thomas has written 'Cloud Native Spring in Action with Spring and Kubernetes'.
  • 🔄 The concept of Dapper, a distributed application runtime for Kubernetes, is introduced as a way to simplify infrastructure interactions for developers.
  • 📝 The importance of observability in distributed systems is emphasized, with Spring Boot's integration of Micrometer for out-of-the-box monitoring.
  • 🔧 Dapper's potential to abstract infrastructure concerns, allowing developers to focus on business logic rather than infrastructure management, is discussed.

Q & A

  • What is the main topic of the presentation?

    -The main topic of the presentation is solving the challenges of distributed systems, with a focus on Dapper and Spring Boot.

  • Why are distributed systems considered complex?

    -Distributed systems are complex due to the difficulty in creating, maintaining, and operating them, especially when it comes to scaling teams and ensuring they have the right expertise.

  • What is the presenter's stance on YAML in cloud-native development?

    -The presenter acknowledges a love-hate relationship with YAML, as it can be a pain to work with due to the time spent configuring and learning to configure it, which detracts from actual application building.

  • What is the purpose of the live demo application presented in the script?

    -The live demo application is a simple, event-driven application based on a Docker example that extends a voting app to illustrate the complexities and capabilities of distributed systems.

  • What is the significance of the Dapper project in the context of this presentation?

    -Dapper is a project that aims to delegate concerns related to connecting to infrastructure and building resilient distributed applications to the infrastructure level, closer to Kubernetes, simplifying developer tasks.

  • How does Dapper help in abstracting the complexities of infrastructure for developers?

    -Dapper injects a sidecar container that exposes APIs for applications to interact with, abstracting the complexities of connecting to different infrastructures and allowing developers to focus on business logic.

  • What is the role of Testcontainers in the presented scenario?

    -Testcontainers are used to simplify the setup and running of the Dapper environment during development and testing, allowing developers to focus on their application logic without worrying about the underlying infrastructure.

  • What is the 'outbox' pattern mentioned in the script, and how does Dapper support it?

    -The 'outbox' pattern is a common distributed system behavior where an application transactionally creates a message in a message broker when storing data. Dapper supports this pattern by automatically sending the event when data storage is acknowledged, without the need for explicit programming by the developer.

  • How does the use of Cloud Events in the script relate to the pub/sub model?

    -Cloud Events provides a standardized data exchange format that can be used across different pub/sub models and technologies, allowing for more flexible and interoperable event-driven architectures.

  • What are the future improvements the presenters are considering for the Dapper integration with Spring Boot?

    -The presenters are considering adding higher-level abstractions similar to Spring Data repositories, simplifying event listening with annotations, and potentially integrating Dapper with new Spring WebFlux APIs for a more native Spring developer experience.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
Distributed SystemsDapperSpring BootTech PresentationDeveloper ToolsCloud NativeYAMLDockerRabbitMQRedisKubernetesPlatform EngineeringObservabilityMicrometerDevOpsConfiguration ManagementEvent-DrivenResilienceService MeshCloud ServicesDev ExperienceKnativeBuildpacksGRPCWorkflowsOutbox PatternState Management