Europe Virtual ALT.NET - EventStore v3


Published on

The slides from the Europe Virtual ALT.NET Presentation on the CQRS EventStore v3:

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Europe Virtual ALT.NET - EventStore v3

  1. 1. Europe Virtual ALT.NET, 25 October 2011 Jonathan OliverUsing and Abusing
  2. 2.  Founder: SmartyStreets ( Founder, co-host: Distributed Podcast Committer, NServiceBus & Autofac Project owner, CQRS EventStore
  3. 3.  Finances the EventStore project Started in 2006 (as Qualified Address) All your street address are belong to us My personal guinea pig Fully geo-distributed
  4. 4.  Messaging SOA DDD CQRS (strict definition) Event Sourcing CQRS Architecture
  5. 5.  Hand-crafted SQL and stored procedures Canonical data model Application integration via shared database Generated DAL
  6. 6.  Temporal database design Messaging Breakthrough—Putting DBs in their place Greg Young—InfoQ and DevTeach Videos
  7. 7.  Capturing business intent Rebuild state from events Rewind, pause, fast-forward Build alternate models Immutable data is crazy scalable Complete audit
  8. 8.  It’s not a framework—I hate frameworks It doesn’t permeate your code You can swap it out and/or build your own Nothing existed at the time—March 2009 Implementation reflects the developer
  9. 9.  Goal: technology is an implementation detail Transactions typically exist in SQL land Lots of interesting alternatives appearing Momentum around NoSQL increasing Two-phase commit virtually non-existent
  10. 10.  Absorbing transactions Cross-resource transactional consistency Commits Exposing a robust, easy-to-use model
  11. 11. “Repository” App / Service Layer Dispatcher / Bus EventStore“ISession” commit Event Stream commit“ISessionFactory” Event Store Pipeline Hooks“NHibernate Magic” Persistence Engine SerializerDisk, DB, Memory, etc. Durable Storage (Snapshotting and some advanced capabilities have been ommitted)
  12. 12. Transaction #1 Message Handler EventStore Async Dispatch Scheduler commit ack•Optimistic Concurrency• Idempotency/De-duplication DiskTransaction #2 Dispatch Messaging Wire Protocol Scheduler Technology Mark as dispatchedTransaction #3 EventStore Disk
  13. 13.  Streams vs. Aggregates Usage Example Implementation
  14. 14.  Pipes and filters Filter out, modify, up-convert Select, Precommit, and Postcommit Implementation
  15. 15.  Synchronous vs. Asynchronous Any bus, broker, or messaging technology Any serialization mechanism Production example Implementation
  16. 16.  XML, JSON/BSON, Protocol Buffers, Thrift, MessagePack, Avro Serialization pipeline Implementation
  17. 17.  The primary storage engine Easy to understand Great management tools Proven, mature implementation 10+ flavors (SQL Server, MySQL, SQLite, etc.) Code
  18. 18.  Easy alternative for .NET Great commercial support Great management tools Responsive community + Oren/Ayende Gotcha: 2PC and repeatable reads
  19. 19.  Highly robust engine Established as a primary NoSQL engine Lots of management tools Code
  20. 20.  CouchDB Amazon Azure Oracle Redis Cassandra .NET System.IO APIs
  21. 21.  Completely optional Avoiding additional dependencies Can use StructureMap, Autofac, Ninject, etc.
  22. 22.  Spike code that worked too well Simple, opinionated “DDDD” framework Purposefully minimalistic “Essence” to be merged into EventStore
  23. 23. Blog: blog.jonathanoliver.comTwitter jonathan_oliverGitHub