Presentation: When Microservices Meet Event Sourcing
Abstract
Microservices are becoming quite a popular architectural pattern, both in the development of brand new systems and when decomposing legacy monoliths into smaller independent modules. However, the typical microservices approach based on HTTP and REST brings with it critical cross-functional challenges for performance, data consistency, and even the HTTP protocol when it comes to describing complex user interactions. The fundamental idea of event sourcing is to describe the state of the system: instead of storing only the current state (as most traditional systems would do) event sourcing stores a sequence of immutable events describing everything that has happened so far. Typically, those events are caused by the execution of commands, which represent the user’s intent.
Events can be published and consumed by other services and used to build query-friendly representations of the aggregated state. When microservices are combined with event sourcing, services no longer need to communicate with each other explicitly and synchronously. Instead, they exchange information indirectly through event publishing/subscribing, which enables those services to be almost completely unaware of the existence of each other, since the events are now the only contract needed. At the same time, the persistence of the event history enables us to be flexible when it comes to answer time-based business queries and accommodate future requirements without impacting many components in the system at once. Vinicius Gomes explains how the combination of microservices and event sourcing helped his team successfully build and evolve a banking services platform.
You’ll learn details of this architectural style in comparison to the traditional HTTP/REST approach, its benefits and challenges, and the first steps on the practical implementation.
Along the way, Vinicius introduces the most important concepts and components, like the event store, event listeners, command handlers, and aggregates and outlines the first steps to their practical implementation. Vinicius also discusses the different levels of testing on this architecture and the most relevant challenges his team has faced so far before sharing a live demo.
Similar Talks
Opportunities and Pitfalls of Event-Driven Utopia
Co-Founder and Chief Technologist @Camunda
Bernd Rücker
Machine-to-Machine Interfaces
Sr. Consultant, AppDev @awscloud
Ari Lerner
Conquering Microservices Complexity @Uber With Distributed Tracing
Creator of Jaeger & Software Engineer @Uber
Yuri Shkuro
PracticalDDD: Bounded Contexts + Events => Microservices
Solution Architect @Particular Software
Indu Alagarsamy
The Not-So-Straightforward Road From Microservices to Serverless
Director, Platform Engineering @Meetup
Phil Calçado
Building a High-Performance Networking Protocol for Microservices
Co-Founder @netifi_inc
Robert Roeser
Connecting the Dots: Applying Microservices (Registration required)
Creator of Jaeger & Software Engineer @Uber
Yuri Shkuro
Microservice Observability AMA w/ Shkuro, Kaiser & MacCárthaigh
Creator of Jaeger & Software Engineer @Uber