Great article!
Sylvain Gautier

Thanks Sylvain! An append-only storage could simply be a good old SQL database. In fact that’s what we currently use, through this library by Ben Smith.

We’ll basically have two main concerns for the “event store”.

  • From the read side, from each projection we must be able to subscribe to some events and catch up on previous events we might have missed, with an at-least-once guarantee.
  • From the write side, we want to guarantee that an event has been stored and replicated at least N times before the aggregate can handle another command. This is again in order to maintain a strong consistency.

From this perspective, Kafka seems very promising as an event store and we’ll probably end up using it. Event sourcing is in fact quoted as one possible use of it in their documentation.