title: Using Kafka as a (CQRS) Eventstore. Good idea?
body: <p>Although I've come across <a href="http://kafka.apache.org/" rel="noreferrer">Kafka</a> before, I just recently realized Kafka may perhaps be used as (the basis of) a <a href="http://martinfowler.com/bliki/CQRS.html" rel="noreferrer">CQRS</a>, <a href="http://martinfowler.com/eaaDev/EventSourcing.html" rel="noreferrer">eventstore</a>.</p>
  
  <p>One of the main points that Kafka supports:</p>
  
  <ul>
  <li>Event capturing / storing, all HA of course.</li>
  <li>Pub / sub architecture</li>
  <li>Ability to replay the eventlog which allows the ability for new subscribers to register with the system after the fact.</li>
  </ul>
  
  <p>Admittedly I'm not 100% versed into CQRS / Event sourcing but this seems pretty close to what an eventstore should be. Funny thing is: I really can't find that much about Kafka being used as an eventstore, so perhaps I am missing something.</p>
  
  <p>So, anything missing from Kafka for it to be a good eventstore? Would it work? Using it production? Interested in insight, links, etc.</p>
  
  <p>Basically the state of the system is saved based on the transactions/events the system has ever received, instead of just saving the current state / snapshot of the system which is what is usually done. (Think of it as a General Ledger in Accounting: all transactions ultimately add up to the final state) This allows all kinds of cool things, but just read up on the links provided.</p>