Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save aph5nt/808cf636a7c1bbd438b0c08b066849f6 to your computer and use it in GitHub Desktop.

Select an option

Save aph5nt/808cf636a7c1bbd438b0c08b066849f6 to your computer and use it in GitHub Desktop.

Revisions

  1. @brendanzab brendanzab revised this gist Apr 7, 2018. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -117,6 +117,7 @@ payloads to trying to translate CRUDful REST calls to commands.
    - https://speakerdeck.com/overeemm/the-dark-side-of-event-sourcing-managing-data-conversion
    - [Axon Framework: Event Upcasting](https://docs.axonframework.org/v/3.0/part3/repositories-and-event-stores.html#event-upcasting)
    - [Michiel Rook: Event versioning (or why I sometimes modify the event store)](https://www.michielrook.nl/2016/09/event-versioning/)
    - [Migrating JSON with lens and foci](https://tech-blog.capital-match.com/posts/4-json-migration.html)
    - [slashdotdash/eventstore-migrator](https://github.com/slashdotdash/eventstore-migrator)
    - Haskell libraries
    - https://hackage.haskell.org/package/safecopy
  2. @brendanzab brendanzab revised this gist Apr 10, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -107,6 +107,7 @@ payloads to trying to translate CRUDful REST calls to commands.
    - https://www.slideshare.net/fatmuemoo/cqrs-api-v2 - this is the one I like the most!
    - https://www.infoq.com/articles/rest-api-on-cqrs
    - [GraphQL](http://graphql.org/) seems like it might be a good fit for exposing CQRS
    - https://github.com/sangria-graphql/sangria-subscriptions-example - example of using GraphQL

    ## Migrations and Schema Evolution

  3. @brendanzab brendanzab revised this gist Mar 29, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -23,7 +23,6 @@
    - [Lagom core concepts: Event Sourcing and CQRS](http://www.lagomframework.com/documentation/1.3.x/scala/ES_CQRS.html)
    - [Concept Map » CQRS And Event Sourcing](http://www.conceptmaps.io/maps/0acfabc1-5e39-4dd7-9590-3b32c2918ec8/detail)
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)
    - [Hyper Lambda: Eventflow - CQRS/ES in Haskell](http://www.hyperlambda.com/posts/cqrs-es-in-haskell/)
    - [James Roper: CQRS increases consistency](https://jazzy.id.au/2016/10/08/cqrs-increases-consistency.html)
    - [Confluent: Stream processing, Event sourcing, Reactive, CEP… and making sense of it all](https://www.confluent.io/blog/making-sense-of-stream-processing/)
    @@ -42,6 +41,7 @@ CQRS, DDD and Event Sourcing are informally defined design patterns. It would be
    ## Aggregate design

    - [Vaughn Vernon: Modeling Aggregates with DDD and Entity Framework](https://vaughnvernon.co/?p=879)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)

    ![Example Aggregates](https://vaughnvernon.co/wordpress/wp-content/uploads/2014/10/Aggregates.png)

  4. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 7 additions and 24 deletions.
    31 changes: 7 additions & 24 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -167,16 +167,7 @@ Some reality checks:
    - [github](https://github.com/pjvds/ncqrs)

    - Clojure
    - [capitalone/cqrs-manager-for-distributed-reactive-services]: An
    implementation accompanying the Strange Loop talk, [Commander:
    Better Distributed Applications through CQRS and Event Sourcing].
    Uses a single `/commands` route for submitting commands to the
    service.

    [capitalone/cqrs-manager-for-distributed-reactive-services]:
    https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services]
    [Commander: Better Distributed Applications through CQRS and Event Sourcing]:
    https://www.youtube.com/watch?v=B1-gS0oEtYc
    - [capitalone/cqrs-manager-for-distributed-reactive-services](https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services): Accompanies the Strange Loop talk, [Commander: Better Distributed Applications through CQRS and Event Sourcing](https://www.youtube.com/watch?v=B1-gS0oEtYc). Uses a single RPC-style `/commands` route for submitting commands to the service.

    - Elixir
    - [Building a CQRS/ES web application in Elixir using Phoenix]
    @@ -197,24 +188,14 @@ Some reality checks:
    [slashdotdash/eventstore-migrator]: https://github.com/slashdotdash/eventstore-migrator

    - Haskell
    - [abailly/hevents]: A very incomplete event sourcing library using
    extensible effects. Shows off how [property based testing could be
    applied to domain models].
    - [jdreaver/eventful]: A more fully fleshed out event sourcing library
    with both in-memory and SQLite event store implementations. Uses an
    `ExpectedVersion` type to attempt to protect against concurrency
    - [abailly/hevents](https://github.com/abailly/hevents): A very incomplete event sourcing library using
    extensible effects.
    - [jdreaver/eventful](https://github.com/jdreaver/eventful): A more fully fleshed out event sourcing library with both in-memory and SQLite event store implementations. Uses an `ExpectedVersion` type to attempt to protect against concurrency
    errors when multiple writers are accessing the event store.
    - [Fristi/Aggregate.hs]: A simple Gist showing an `Aggregate` type
    class with associated types for commands and events.
    - [Fristi/Aggregate.hs](https://gist.github.com/Fristi/7327904): A simple Gist showing an `Aggregate` type class with associated types for commands and events.
    - http://www.hyperlambda.com/posts/cqrs-es-in-haskell/
    - https://abailly.github.io/posts/cm-arch-design.html#models

    [abailly/hevents]: https://github.com/abailly/hevents
    [property based testing could be applied to domain models]:
    https://github.com/abailly/hevents/blob/d38789bf5ae787c35d496b72fe47419d965032de/test/Hevents/Eff/Demo.hs#L31-L49
    [jdreaver/eventful]: https://github.com/jdreaver/eventful
    [Fristi/Aggregate.hs]: https://gist.github.com/Fristi/7327904

    - Java
    - AxonFramework
    - [website](http://www.axonframework.org/)
    @@ -226,6 +207,8 @@ Some reality checks:
    - Eventsourcing for Java (es4j)
    - [website](https://eventsourcing.com/)
    - [eventsourcing/es4j](https://github.com/eventsourcing/es4j)
    - Sourcerer
    - [github](https://github.com/elder-oss/sourcerer)

    - Ruby
    - sequent:
  5. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 9 additions and 0 deletions.
    9 changes: 9 additions & 0 deletions reactive_systems_glossary.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,9 @@
    - _aggregate_: a collection of _entities_ that cluster around a single root entity, referred to as the _aggregate root_.
    - _aggregate root_: the entity whose _uuid_ corresponds to the _uuid_ that identifies the entire _aggregate_
    - _command_: a message corresponding to a request to change the state of an _aggregate_.
    - _entity_: some data with an associated _uuid_.
    - _event_: a message that records an _aggregate_'s state transition.
    - _event log_: an append-only record of all the events applied to the domain model.
    - _read model_: read-optimized caches that are subscribed to updates on the _write model_. Multiple _read models_ can subscribe to a single read model.
    - _uuid_: a universally unique identifier.
    - _write model_: the source of truth of the state of a domain. This is often an _event log_.
  6. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -26,6 +26,7 @@
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)
    - [Hyper Lambda: Eventflow - CQRS/ES in Haskell](http://www.hyperlambda.com/posts/cqrs-es-in-haskell/)
    - [James Roper: CQRS increases consistency](https://jazzy.id.au/2016/10/08/cqrs-increases-consistency.html)
    - [Confluent: Stream processing, Event sourcing, Reactive, CEP… and making sense of it all](https://www.confluent.io/blog/making-sense-of-stream-processing/)

    ![Diagram of CQRS+ES](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)

  7. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -33,7 +33,7 @@

    ### Formal foundations

    CQRS, DDD and Event Sourcing are high level, imprecisely defined design patterns. It would be nice to see a more formal foundation for these ideas to help find the signal in the noise and potentially build a better pedogalogical foundation for it. Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).
    CQRS, DDD and Event Sourcing are informally defined design patterns. It would be nice to see a precise, theoretical foundation for these ideas. This could help find the signal in the noise and reduce confusion for newcomers. Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).

    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
  8. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 0 additions and 3 deletions.
    3 changes: 0 additions & 3 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -171,9 +171,6 @@ Some reality checks:
    Better Distributed Applications through CQRS and Event Sourcing].
    Uses a single `/commands` route for submitting commands to the
    service.
    - cqrs-server
    - [website](http://yuppiechef.github.io/cqrs-server/)
    - [github](https://github.com/Yuppiechef/cqrs-server)

    [capitalone/cqrs-manager-for-distributed-reactive-services]:
    https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services]
  9. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -25,14 +25,15 @@
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)
    - [Hyper Lambda: Eventflow - CQRS/ES in Haskell](http://www.hyperlambda.com/posts/cqrs-es-in-haskell/)
    - [James Roper: CQRS increases consistency](https://jazzy.id.au/2016/10/08/cqrs-increases-consistency.html)

    ![Diagram of CQRS+ES](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)

    ![Testing aggregates](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs04-de7b4887682a5edf.png)

    ### Formal foundations

    CQRS and Event Sourcing are high level, imprecisely defined design patterns. It would be nice to see a more formal foundation for these ideas. Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).
    CQRS, DDD and Event Sourcing are high level, imprecisely defined design patterns. It would be nice to see a more formal foundation for these ideas to help find the signal in the noise and potentially build a better pedogalogical foundation for it. Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).

    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
  10. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 1 addition and 3 deletions.
    4 changes: 1 addition & 3 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -32,9 +32,7 @@

    ### Formal foundations

    CQRS and Event Sourcing are high level, imprecisely defined design patterns. It would be nice to see a more formal foundation for these ideas. Some interesting links:

    Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).
    CQRS and Event Sourcing are high level, imprecisely defined design patterns. It would be nice to see a more formal foundation for these ideas. Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).

    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
  11. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 9 additions and 2 deletions.
    11 changes: 9 additions & 2 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -22,8 +22,6 @@
    - [Martin Fowler: Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html)
    - [Lagom core concepts: Event Sourcing and CQRS](http://www.lagomframework.com/documentation/1.3.x/scala/ES_CQRS.html)
    - [Concept Map » CQRS And Event Sourcing](http://www.conceptmaps.io/maps/0acfabc1-5e39-4dd7-9590-3b32c2918ec8/detail)
    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)
    - [Hyper Lambda: Eventflow - CQRS/ES in Haskell](http://www.hyperlambda.com/posts/cqrs-es-in-haskell/)
    @@ -32,6 +30,15 @@

    ![Testing aggregates](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs04-de7b4887682a5edf.png)

    ### Formal foundations

    CQRS and Event Sourcing are high level, imprecisely defined design patterns. It would be nice to see a more formal foundation for these ideas. Some interesting links:

    Interstingly, [akka-persistence](http://doc.akka.io/docs/akka/current/scala/persistence.html) is an implementation of event sourcing that seems quite similar to [state machine replication](https://en.wikipedia.org/wiki/State_machine_replication). Aggregates in this instance corespond to [`PersistantActor`s](http://doc.akka.io/api/akka/2.4/akka/persistence/PersistentActor.html).

    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)

    ## Aggregate design

    - [Vaughn Vernon: Modeling Aggregates with DDD and Entity Framework](https://vaughnvernon.co/?p=879)
  12. @brendanzab brendanzab revised this gist Mar 27, 2017. 1 changed file with 3 additions and 5 deletions.
    8 changes: 3 additions & 5 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -165,11 +165,9 @@ Some reality checks:
    Better Distributed Applications through CQRS and Event Sourcing].
    Uses a single `/commands` route for submitting commands to the
    service.
    - onyx
    - [website](http://www.onyxplatform.org/)
    - [github](https://github.com/onyx-platform)
    - [docs](http://www.onyxplatform.org/docs/)
    - [low level design docs](http://www.onyxplatform.org/docs/user-guide/0.10.0-beta9/#low-level-design)
    - cqrs-server
    - [website](http://yuppiechef.github.io/cqrs-server/)
    - [github](https://github.com/Yuppiechef/cqrs-server)

    [capitalone/cqrs-manager-for-distributed-reactive-services]:
    https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services]
  13. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -26,6 +26,7 @@
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)
    - [Hyper Lambda: Eventflow - CQRS/ES in Haskell](http://www.hyperlambda.com/posts/cqrs-es-in-haskell/)

    ![Diagram of CQRS+ES](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)

  14. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -167,7 +167,8 @@ Some reality checks:
    - onyx
    - [website](http://www.onyxplatform.org/)
    - [github](https://github.com/onyx-platform)
    - [low level design docs](https://github.com/onyx-platform/onyx/blob/0.10.x/doc/user-guide/architecture-low-level-design.adoc)
    - [docs](http://www.onyxplatform.org/docs/)
    - [low level design docs](http://www.onyxplatform.org/docs/user-guide/0.10.0-beta9/#low-level-design)

    [capitalone/cqrs-manager-for-distributed-reactive-services]:
    https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services]
  15. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -165,8 +165,8 @@ Some reality checks:
    Uses a single `/commands` route for submitting commands to the
    service.
    - onyx
    - [website](http://yuppiechef.github.io/cqrs-server/)
    - [github](https://github.com/Yuppiechef/cqrs-server)
    - [website](http://www.onyxplatform.org/)
    - [github](https://github.com/onyx-platform)
    - [low level design docs](https://github.com/onyx-platform/onyx/blob/0.10.x/doc/user-guide/architecture-low-level-design.adoc)

    [capitalone/cqrs-manager-for-distributed-reactive-services]:
  16. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -164,6 +164,10 @@ Some reality checks:
    Better Distributed Applications through CQRS and Event Sourcing].
    Uses a single `/commands` route for submitting commands to the
    service.
    - onyx
    - [website](http://yuppiechef.github.io/cqrs-server/)
    - [github](https://github.com/Yuppiechef/cqrs-server)
    - [low level design docs](https://github.com/onyx-platform/onyx/blob/0.10.x/doc/user-guide/architecture-low-level-design.adoc)

    [capitalone/cqrs-manager-for-distributed-reactive-services]:
    https://github.com/capitalone/cqrs-manager-for-distributed-reactive-services]
  17. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 8 additions and 6 deletions.
    14 changes: 8 additions & 6 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -126,12 +126,14 @@ payloads to trying to translate CRUDful REST calls to commands.

    [Datomic](http://www.datomic.com/) is a very interesting database! It splits the read side from the write side, and uses an append-only log for storing data. Unlike DDD-style event sourcing though, events don't correspond to domain events. Rather they are factual assertions that [can be mapped to the more traditional 'CRUD' operations](http://docs.datomic.com/tutorial.html):

    CRUD | Datomic
    =======|========
    Create | Assert
    Read | Read
    Update | Accumulate
    Delete | Retract
    | CRUD | Datomic |
    | ------ | ---------- |
    | Create | Assert |
    | Read | Read |
    | Update | Accumulate |
    | Delete | Retract |

    The nice thing about this is that it allows one to hook into a more powerful and flexible query language than SQL, [Datalog](http://docs.datomic.com/query.html), that allows you to do historical querying. There have been questions raised about Datomic's scalability though (citation needed), and the database is tightly coupled to Clojure.

    ## Contrarian Views

  18. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 11 additions and 0 deletions.
    11 changes: 11 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -122,6 +122,17 @@ payloads to trying to translate CRUDful REST calls to commands.
    - https://github.com/dnvriend/akka-persistence-jdbc/blob/master/src/test/resources/schema/postgres/postgres-schema.sql
    - https://cqrs.wordpress.com/documents/building-event-storage/

    ## Alternatives

    [Datomic](http://www.datomic.com/) is a very interesting database! It splits the read side from the write side, and uses an append-only log for storing data. Unlike DDD-style event sourcing though, events don't correspond to domain events. Rather they are factual assertions that [can be mapped to the more traditional 'CRUD' operations](http://docs.datomic.com/tutorial.html):

    CRUD | Datomic
    =======|========
    Create | Assert
    Read | Read
    Update | Accumulate
    Delete | Retract

    ## Contrarian Views

    Some reality checks:
  19. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -2,11 +2,12 @@

    ## Books

    - [CQRS Journey](https://msdn.microsoft.com/en-us/library/jj554200.aspx): Free ebook from Microsoft
    - [CQRS Journey](https://msdn.microsoft.com/en-us/library/jj554200.aspx): Free ebook from Microsoft (Print book available for purchase)
    - [Functional and Reactive Domain Modeling](https://www.manning.com/books/functional-and-reactive-domain-modeling):
    A high level overview of how to build up domain models using free monads and interpreters.
    - [Reactive Microservices Architecture](https://www.lightbend.com/blog/reactive-microservices-architecture-free-oreilly-report-by-lightbend-cto-jonas-boner): Free booklet from Lagom and O'Reilly
    - [Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka](https://www.amazon.com/Reactive-Messaging-Patterns-Actor-Model/dp/0133846830/)
    - [Domain-Driven Design: Tackling Complexity in the Heart of Software](https://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/)

    ## Event Sourcing and CQRS

  20. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -6,6 +6,7 @@
    - [Functional and Reactive Domain Modeling](https://www.manning.com/books/functional-and-reactive-domain-modeling):
    A high level overview of how to build up domain models using free monads and interpreters.
    - [Reactive Microservices Architecture](https://www.lightbend.com/blog/reactive-microservices-architecture-free-oreilly-report-by-lightbend-cto-jonas-boner): Free booklet from Lagom and O'Reilly
    - [Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka](https://www.amazon.com/Reactive-Messaging-Patterns-Actor-Model/dp/0133846830/)

    ## Event Sourcing and CQRS

  21. @brendanzab brendanzab revised this gist Mar 26, 2017. 1 changed file with 8 additions and 2 deletions.
    10 changes: 8 additions & 2 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -25,9 +25,15 @@
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)

    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)
    ![Diagram of CQRS+ES](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)

    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs04-de7b4887682a5edf.png)
    ![Testing aggregates](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs04-de7b4887682a5edf.png)

    ## Aggregate design

    - [Vaughn Vernon: Modeling Aggregates with DDD and Entity Framework](https://vaughnvernon.co/?p=879)

    ![Example Aggregates](https://vaughnvernon.co/wordpress/wp-content/uploads/2014/10/Aggregates.png)

    ## Consistency, Distributed Transactions, and Sagas

  22. @brendanzab brendanzab revised this gist Mar 24, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -126,6 +126,8 @@ Some reality checks:
    ## Implementations in various languages

    - C#
    - cqrs-starter-kit
    - [github](https://github.com/edumentab/cqrs-starter-kit)
    - m-r: Greg Young's 'Simple CQRS example'
    - [github](https://github.com/gregoryyoung/m-r)
    - m-r (RESTful): An altered version of Greg Young's 'Simple CQRS example', showing how one might integrate it with a REST API
  23. @brendanzab brendanzab revised this gist Mar 23, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -14,6 +14,7 @@
    - [CQRS Journey Reference 3: Introducing Event Sourcing](https://msdn.microsoft.com/en-us/library/jj591559.aspx)
    - [Microsoft Docs: Command and Query Responsibility Segregation (CQRS)](https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs)
    - [Microsoft Docs: Event Sourcing](https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing)
    - [Microsoft Docs: CRUD, Only When You Can Afford It](https://msdn.microsoft.com/library/ms978509.aspx)
    - [Martin Fowler: Bounded Context](https://martinfowler.com/bliki/BoundedContext.html)
    - [Martin Fowler: CQRS](https://martinfowler.com/bliki/CQRS.html)
    - [Martin Fowler: Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html)
  24. @brendanzab brendanzab revised this gist Mar 20, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -12,6 +12,8 @@
    - [The Reactive Manifesto](http://www.reactivemanifesto.org/)
    - [CQRS Journey Reference 2: Introducing the Command Query Responsibility Segregation Pattern](https://msdn.microsoft.com/en-us/library/jj591573.aspx)
    - [CQRS Journey Reference 3: Introducing Event Sourcing](https://msdn.microsoft.com/en-us/library/jj591559.aspx)
    - [Microsoft Docs: Command and Query Responsibility Segregation (CQRS)](https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs)
    - [Microsoft Docs: Event Sourcing](https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing)
    - [Martin Fowler: Bounded Context](https://martinfowler.com/bliki/BoundedContext.html)
    - [Martin Fowler: CQRS](https://martinfowler.com/bliki/CQRS.html)
    - [Martin Fowler: Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html)
  25. @brendanzab brendanzab revised this gist Mar 17, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -20,6 +20,7 @@
    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)
    - [Kevin Webber: Modelling Reactive Systems with Event Storming and Domain-Driven Design](https://blog.redelastic.com/corporate-arts-crafts-modelling-reactive-systems-with-event-storming-73c6236f5dd7#.xqs7w3tsm)

    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)

  26. @brendanzab brendanzab revised this gist Mar 17, 2017. 1 changed file with 4 additions and 0 deletions.
    4 changes: 4 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -192,6 +192,10 @@ Some reality checks:
    - [website](https://eventsourcing.com/)
    - [eventsourcing/es4j](https://github.com/eventsourcing/es4j)

    - Ruby
    - sequent:
    - [github](https://github.com/zilverline/sequent)

    - Rust
    - Chronicle: An experimental CQRS+ES framework in Rust by yours truly! :)
    - [github](https://github.com/brendanzab/chronicle)
  27. @brendanzab brendanzab revised this gist Mar 16, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -22,6 +22,7 @@
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)

    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)

    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs04-de7b4887682a5edf.png)

    ## Consistency, Distributed Transactions, and Sagas
  28. @brendanzab brendanzab revised this gist Mar 16, 2017. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -21,6 +21,9 @@
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)

    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs02-b4a0ac16e70bc7f6.png)
    ![](http://www.h-online.com/developer/imgs/80/9/8/2/8/6/0/cqrs04-de7b4887682a5edf.png)

    ## Consistency, Distributed Transactions, and Sagas

    - [Life Beyond Distributed Transactions: An apostate's opinion](https://queue.acm.org/detail.cfm?id=3025012), Pat Helland
  29. @brendanzab brendanzab revised this gist Mar 16, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -19,6 +19,7 @@
    - [Concept Map » CQRS And Event Sourcing](http://www.conceptmaps.io/maps/0acfabc1-5e39-4dd7-9590-3b32c2918ec8/detail)
    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)
    - [The H: CQRS – a new architecture precept based on segregation of commands and queries](http://www.h-online.com/developer/features/CQRS-an-architecture-precept-based-on-segregation-of-commands-and-queries-1803276.html)

    ## Consistency, Distributed Transactions, and Sagas

  30. @brendanzab brendanzab revised this gist Mar 15, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions reactive_systems_bibliography.md
    Original file line number Diff line number Diff line change
    @@ -17,6 +17,8 @@
    - [Martin Fowler: Event Sourcing](https://martinfowler.com/eaaDev/EventSourcing.html)
    - [Lagom core concepts: Event Sourcing and CQRS](http://www.lagomframework.com/documentation/1.3.x/scala/ES_CQRS.html)
    - [Concept Map » CQRS And Event Sourcing](http://www.conceptmaps.io/maps/0acfabc1-5e39-4dd7-9590-3b32c2918ec8/detail)
    - [Wikipedia: State machine replication](https://en.wikipedia.org/wiki/State_machine_replication)
    - [Wikipedia: Mealy machine](https://en.wikipedia.org/wiki/Mealy_machine)

    ## Consistency, Distributed Transactions, and Sagas