Event Sourcing and CQRS with Apache Kafka and Friends
As enterprises are attempting to develop more advanced microservices architectures, synchronous request/reply-centric operations are presenting multiple complex data challenges:
- How do we achieve transactional behavior without the complexity of two-phase commit?
- How do we reference common entities from multiple services without overwhelming the hosting services?
- How do we answer questions spanning multiple services without the convenience of SQL JOINs?
Event Sourcing and Command-Query Responsibility Separation (CQRS) are an effective pair of data and collaboration patterns that can help us address these challenges.
One of the key tasks involved in designing an Event Sourcing and CQRS solution is the choice of write and read models. The ideal write model supports long-term retention of an immutable, append-only log of events, organized by topics to which clients can subscribe. The ideal read model is…well, whatever you need it to be to support your query needs!
In this session, we’ll examine how effective Apache Kafka can be at supplying both write and read models, as well as look at other options for read models in the open source ecosystem.
About Matt Stine
My passion is taking a metaphysical approach to software engineering: what is the nature of the collaborative game that we continuously play, and are there better, more contextually-aware ways to play that game?
By day I lead a team tasked with taking a first-principles-centric approach to intentionally enabling programming language usage at the largest bank in the United States.
By night I write and teach my way through a masterclass in software engineering and architecture targeting early-career software engineers working in large-scale enterprise technology organizations.
What is the primary goal?
To win the game. More seriously: to get 1% better every day at providing business value through software.
Who am I?
I'm a 22-year veteran of the enterprise software industry. I've played almost every role I can imagine:
- Software Engineer
- Software Architect
- Technical Lead
- Engineering Manager
- Consultant
- Product Manager
- Field CTO
- Developer Advocate
- Conference Speaker
- Author
- Technical Trainer
- Technical Marketer
- Site Reliability Engineer
- Desktop Support Specialist
I've worked at Fortune 500 companies, a tenacious teal cloud startup, and a not-for-profit children's hospital. I've written a book, and I've hosted a podcast. I've learned a lot along the way, including many things I wish I'd known when I first got started. And so now I want to pass those learnings on to you, especially if you've only just begun your career.
More About Matt »