This is just a list of notes and facts I have gathered about Lagom. I’m the kind of person that asks 1 million questions and likes to know why things are done.
Why does Lagom use Cassandra as an event store system?
Lagom uses Cassandra as it’s event store. I wanted to know why they would choose Cassandra so I did some digging. I found the following video helpful in understanding why anyone would use Cassandra for an event store instead of EventStore itself. The video is not about Lagom, however it is about Cassandra and CQRS/Event Sourcing and why you would choose Cassandra as an event store. Basically Cassandra has features that are required for Event Sourcing and make it a good fit for it.
Why does Lagom use KAFKA as a Message Broker?
The documentation mentions using KAFKA as a Message Broker. I wanted to know why? This article helped clarify what the difference between a message bus and a message broker. Basically a broker gives a little less coupling with some other nice features. A message bus is more strict with a Schema like a traditional RDBMS database system, a message broker is more free like a NoSql database it has no Schema. Read the article for the other benefits and differences.
Codecentric: CQRS and Event Sourcing Applications with Cassandra
This video explains how to handle event sourcing with Cassandra
I also found this link to be helpful in understanding why Lagom would use Cassandra instead of EventStore. That article has a nice comparison of Cassandra vs other similar software used for event storage. A quick look at the features is all it takes.
Exploring CQRS and Event Sourcing This link is from a Microsoft project and is an excellent resource about CQRS and Event Sourcing. It walks you through the entire decision process of breaking down an entire application domain with basic Domain Driven Design concepts. It is very thorough and a great read to help you understand what goes into CQRS, Event sourcing and breaking your domain into smaller more useable chunks.
Patterns, Principles and Practices of Domain-Driven Design by Scott Millett and Nick Tune This book covers Event Sourcing and CQRS as well as all of the other principles of Domain Driven Design. The nice thing about this book is it has code examples, the code is C#, but you don’t have to down load it to view it and basically follow along. The examples often come after long explanations of the concepts, if you have time or know C# you can download and try the example code, a nice extra if you ask me. This is one that stays in a pile next to my desk.
Greg Young – CQRS and Event Sourcing – Code on the Beach 2014
Greg tells some great stories that relate to why CQRS and Event Sourcing are useful and gives interesting insights into use cases. For many of us who have been doing the old fashioned CRUD architecture of storing and reading everything from a database, this video will make sense of why that was a bad way of doing things. After this video you will really want to dig into CQRS and Event Sourcing in depth.
CQRS and Event Sourcing with Lagom by Miel Donkers
An Introduction to CQRS and Event Sourcing Patterns – Mathew McLoughlin
In this video Mathew explains how an Event Sourced system that utilizes CQRS works. One thing covered is why having separate read and write data stores is a good idea and how it works in an abstracted way.
Event Sourcing You are doing it wrong by David Schmitz
I like this video this guy is funny. David quickly covers Microservices, event sourcing and other Domain Driven Design concepts, tying things together in a very entertaining animated and funny way. This is one of my favorite videos about event sourcing, it answers a lot of questions and makes many good points. This video is worth watching more than once.
Allard Buijze – Talk Session: The Inconveniences of Event Sourcing
This video has some good abstract information about events and event sourcing in microservices. It points out some of the issues with event sourcing and how to overcome them. Allard covers the types of Events, commands, events, queries and how they are used in an event driven system. The most interesting and for me useful part of this video is the part about GDPR and how to comply in an Event Sourced system at about the 38:00 mark.
Martin Kleppmann — Event Sourcing and Stream Processing at Scale
Udi Dahan – If (domain logic) then CQRS, or Saga?
Udi tells a story that builds up to CQRS and Sagas. He says in CQRS that Commands can’t be allowed to fail. At about 27:00 he explains what this means. At ~31:00 he talks about eventual consistency and how to deal with it in a system. At about 40:00 give them the Rick Sanchez slow ramp. LOL He finishes up by talking about bounded contexts.