September 02, 2014

Literature on Event Sourcing, Event Stores and CQRS

A collection of literature I recommend for reading on Event Sourcing/Event Stores and CQRS, to be extended over time. Ranges from high-level beginner material to implementation details and code samples.

Event Sourcing

Code

  • NEventStore CommonDomain: Originally by Jonathan Oliver and now maintained as part of the NEventStore project, the CommonDomain is a great foundation for C# applications that want to use Event Sourcing and can also serve as a reference for ports into other languages.
  • IDDD Sample application: The “Collaboration” Bounded Context of Vaughn Vernon’s sample code for this IDDD book (see below) uses event sourcing, see, e.g., the Discussion AR derived from the EventSourcedRootEntity. This sample can get you started with Event Sourcing in Java very quickly.
  • Lokad IDDD Sample: the source code for Rinat Abdullin’s chapter in the IDDD book (C#)
  • .NET Event Sourcing: a lightweight framework for .NET, attempts to fill in the gaps between NServiceBus and NEventStore.
  • AggregateSource: A lightweight infrastructure for doing eventsourcing using aggregates in C# by Yves Reynhout; see also AggregateSource Testing

Testing

Event Store

Code

  • NEventStore: The implementation of the popular event store for .NET is a must-read: It’s very well designed and the code is easy to understand. It can serve as a template for implementation in other languages — in fact, our own JEEventStore was heavily influenced by it.

CQRS (including CQRS+ES)

Code Samples

DDD

Messaging

  • The LMAX disruptor: Entry in Martin Fowler’s bliki. The LMAX disruptor a high-performance, single-threaded messaging architecture for the JVM that for a financial application handles up to 6 million order per second. Even if such scalability is way out of scope of most projects, you should be aware of it.
  • NServiceBus: The most popular service bus for .NET. If you are going to use CQRS+ES in a C# project, you should look at this.

Updates to this post

  • 2015-07-15: Added Gabriel Schenker’s blog series on Event Sourcing.

Creative Commons-licens All posts and pages on this blog are licensed under Creative Commons Attribution-ShareAlike license
CC0 All original code samples (those that are not quoted with another source) are placed in the public domain.
comments powered by Disqus