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

Tracks
Monday, 26 June
-
Microservices: Patterns & Practices
Practical experiences and lessons with Microservices.
-
Java - Propelling the Ecosystem Forward
Lessons from Java 8, prepping for Java 9, and looking ahead at Java 10. Innovators in Java.
-
High Velocity Dev Teams
Working Smarter as a team. Improving value delivery of engineers. Lean and Agile principles.
-
Modern Browser-Based Apps
Reactive, cross platform, progressive - webapp tech today.
-
Innovations in Fintech
Technology, tools and techniques supporting modern financial services.
Tuesday, 27 June
-
Architectures You've Always Wondered About
Case studies from the most relevant names in software.
-
Developer Experience: Level up Your Engineering Effectiveness
Trends, tools and projects that we're using to maximally empower your developers.
-
Chaos & Resilience
Failures, edge cases and how we're embracing them.
-
Stream Processing at Large
Rapidly moving data at scale.
-
Building Security Infrastructure
How our industry is being attacked and what you can do about it.
Wednesday, 28 June
-
Next Gen APIs: Designs, Protocols, and Evolution
Practical deep-dives into public and internal API design, tooling and techniques for evolving them, and binary and graph-based protocols.
-
Immutable Infrastructures: Orchestration, Serverless, and More
What's next in infrastructure. How cloud function like lambda are making their way into production.
-
Machine Learning 2.0
Machine Learning 2.0, Deep Learning & Deep Learning Datasets.
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS.
-
Optimizing Yourself
Maximizing your impact as an engineer, as a leader, and as a person.
-
Ask Me Anything (AMA)