Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Europe Virtual ALT.NET, 25 October 2011                         Jonathan OliverUsing and Abusing
   Founder: SmartyStreets (smartystreets.com)   Founder, co-host: Distributed Podcast   Committer, NServiceBus & Autofa...
   Finances the EventStore project   Started in 2006 (as Qualified Address)   All your street address are belong to us...
   Messaging   SOA   DDD   CQRS (strict definition)   Event Sourcing   CQRS Architecture
   Hand-crafted SQL and stored procedures   Canonical data model   Application integration via shared database   Gener...
   Temporal database design   Messaging   Breakthrough—Putting DBs in their place   Greg Young—InfoQ and DevTeach Videos
   Capturing business intent   Rebuild state from events   Rewind, pause, fast-forward   Build alternate models   Imm...
   It’s not a framework—I hate frameworks   It doesn’t permeate your code   You can swap it out and/or build your own ...
   Goal: technology is an implementation detail   Transactions typically exist in SQL land   Lots of interesting altern...
   Absorbing transactions   Cross-resource transactional consistency   Commits   Exposing a robust, easy-to-use model
“Repository”               App / Service Layer                     Dispatcher / Bus                                       ...
Transaction #1      Message Handler          EventStore                                                                Asy...
   Streams vs. Aggregates   Usage Example   Implementation
   Pipes and filters   Filter out, modify, up-convert   Select, Precommit, and Postcommit   Implementation
   Synchronous vs. Asynchronous   Any bus, broker, or messaging technology   Any serialization mechanism   Production ...
   XML, JSON/BSON, Protocol Buffers, Thrift,    MessagePack, Avro   Serialization pipeline   Implementation
   The primary storage engine   Easy to understand   Great management tools   Proven, mature implementation   10+ fla...
   Easy alternative for .NET   Great commercial support   Great management tools   Responsive community + Oren/Ayende...
   Highly robust engine   Established as a primary NoSQL engine   Lots of management tools   Code
   CouchDB   Amazon   Azure   Oracle   Redis   Cassandra   .NET System.IO APIs
   Completely optional   Avoiding additional dependencies   Can use StructureMap, Autofac, Ninject, etc.
   Spike code that worked too well   Simple, opinionated “DDDD” framework   Purposefully minimalistic   “Essence” to b...
Blog:     blog.jonathanoliver.comTwitter   jonathan_oliverGitHub    github.com/joliver
Upcoming SlideShare
Loading in …5
×

Europe Virtual ALT.NET - EventStore v3

3,806 views

Published on

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

http://blog.jonathanoliver.com/2011/10/eventstore-evan-presentation/

Published in: Technology
  • Be the first to comment

Europe Virtual ALT.NET - EventStore v3

  1. 1. Europe Virtual ALT.NET, 25 October 2011 Jonathan OliverUsing and Abusing
  2. 2.  Founder: SmartyStreets (smartystreets.com) 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 github.com/joliver

×