• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Europe Virtual ALT.NET - EventStore v3

Europe Virtual ALT.NET - EventStore v3



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

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




Total Views
Views on SlideShare
Embed Views



2 Embeds 2

http://a0.twimg.com 1
https://twitter.com 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Europe Virtual ALT.NET - EventStore v3 Europe Virtual ALT.NET - EventStore v3 Presentation Transcript

    • Europe Virtual ALT.NET, 25 October 2011 Jonathan OliverUsing and Abusing
    •  Founder: SmartyStreets (smartystreets.com) Founder, co-host: Distributed Podcast Committer, NServiceBus & Autofac Project owner, CQRS EventStore
    •  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
    •  Messaging SOA DDD CQRS (strict definition) Event Sourcing CQRS Architecture
    •  Hand-crafted SQL and stored procedures Canonical data model Application integration via shared database Generated DAL
    •  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 Immutable data is crazy scalable Complete audit
    •  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
    •  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
    •  Absorbing transactions Cross-resource transactional consistency Commits Exposing a robust, easy-to-use model
    • “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)
    • 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
    •  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 example Implementation
    •  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+ flavors (SQL Server, MySQL, SQLite, etc.) Code
    •  Easy alternative for .NET Great commercial support Great management tools Responsive community + Oren/Ayende Gotcha: 2PC and repeatable reads
    •  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 be merged into EventStore
    • Blog: blog.jonathanoliver.comTwitter jonathan_oliverGitHub github.com/joliver