Connecting...

W1siziisimnvbxbpbgvkx3rozw1lx2fzc2v0cy9zawduawz5lxrly2hub2xvz3kvanbnl2jhbm5lci1kzwzhdwx0lmpwzyjdxq

Traversals and Scans and CQRS, oh my! by Itamar Ravid

W1siziisijiwmtkvmdivmtmvmtavndmvmzuvotmvcgv4zwxzlxbob3rvltk2mzgxlmpwzwcixsxbinailcj0ahvtyiisijkwmhg5mdbcdtawm2uixv0

Are you not always fully aware of how to create a CQRS-based application? 

Itamar Ravid at Scalapeño gave us a look into implementing CQRS and ES in a purely functional manner and how it is nothing more than activating the data types and type classes already written!

 

 
Traversals and Scans and CQRS, oh my!
Command/Query responsibility separation and event sourcing are two great patterns for structuring microservices. They are a natural fit for architectures based around Kafka and Streams, and help us achieve immutability and replaybility for our data. However, it's not always clear *how* you should create a CQRS-based application, and where do all the moving parts fit. 
 
In this talk, I will show how implementing CQRS and ES in a purely functional manner. We'll see how doing this is nothing more than activating the data types and type classes already written for us: we'll use traversable functors and the State and Writer monads to elegantly construct the components that we need. We'll also touch the pitfalls here and how to integrate these components with a streaming library such as Akka Streams.

 

This talk was given by Itamar Ravid at Scalapeño 2018.