How To Build An Event Store Masterclass
How to create an event store and read models that you can use in your next event source projects!
Event Sourcing and CQRS: What are they and why do you need them?
Check out this great video by Greg Young, it will explain the huge business benefits:
Why you need an event store!
- Your event store is the heart of an event sourced system
- Your event store is the source of truth for all business domain events
- Your event store needs to be able capture and replay all domain events in your system reliably and with great performance
In this masterclass, I will walk you through building an event store that you can re-use in your own projects. In addition, I will walk you through building a read model that allows you to query domain events from the read model.
I will also go through why building your own event store has many more advantages over using a third-party event store.
We will be building the event store in AWS DynamoDB but you can apply the design to a traditional RDMS SQL storage just as well. I will go over the pros and cons in doing so.
Take advantage of the huge benefits that CQRS and Event Sourced systems can bring. In this masterclass, you will learn the benefits of:
- CQRS and why it is hugely beneficial in your software and especially for simplifying your designs to make it even easier to maintain software
- Event Sourcing and its amazing opportunities it provides for the business / customers of your software
- AWS managed services and how these services allow you to reap the benefits from the very beginning to achieve scalability, availability, reliability, and high performance
- Simple but powerful architecture that I have used in my very own commercial projects with building AWS based cloud systems
What will you get?
With my detailed guidance in this masterclass, you will get:
- A proven event store design that you can use in your future projects (design can easily be implemented in other languages such as Java)
- A fully functioning sample application with C# source code and CloudFormation script that you can re-use in your own projects
- Sample architecture and sample implementation in C# and .NET Core
- AWS DynamoDB table structures for the event store which you can apply to other databases as well including SQL databases
- Example read models in C# and SQL for MySQL to expand for your own projects and reporting needs
- Example task-based UI and how commands flow from UI to the domain model in your backend
- Example on how to build a CQRS and Event Sourced system
- Example projection in C# and how to analyze domain events and create a simple summary report
I will show you how to put all these parts together in a straightforward manner using C# and .NET Core 2.1
"Save yourself a lot of time and headaches because I already went through these hurdles over the years!"
I'm a passionate, fanatic, software designer and creator. I solve users’ problems by creating software solutions using innovation in the small. My expertise is in understanding users' problems and translating these challenges into beautiful solutions that make people happy and at the end, makes their lives a little easier. These problems are really opportunities to empower users and eliminate the drudgery. I'm against the status quo. I live against the status quo because, in my opinion, creative and innovative solutions are not created following a linear approach but come, in part, from broad experiences in one’s life and an innovative mind.
I’m blessed to have over 27 years of professional software development experience in 10 industries including electronic payment industry, real estate, travel & leisure (cruise industry), retail, medical, dental, automotive, banking, legal, and airline. Because of these vast experiences across so many industries, it allows me to see problems as opportunities and come up with ideas that are not the norm in many cases.
Check out my tech blog at http://thomasjaeger.wordpress.com
StartData flow within the architecture and how the event store will operate (5:22)
PreviewOverview of the components we will build (4:36)
StartImplementing a command (21:59)
StartImplementing command handlers (25:48)
StartImplementing an aggregate root (39:07)
StartImplementing DynamoDB Tables by Hand (14:24)
StartImplementing DynamoDB Tables with CloudFormation (13:42)
StartCreating a DynamoDB event store in C# and .NET Core (52:33)
StartHow to manage concurrency violations? (22:59)
StartIn-memory event store (8:24)