Bobby Calderwood on Clojure Event Sourcing and Streams with Redis

Tuesday, March 19, 2019 - 18:30
NYC Clojure Users Group
New York

In March, we're excited to host Bobby Calderwood from Evident Systems and formerly of Cognitect!


My team built a system for a major auto manufacturer that required significant asynchronous processing. Our client already had Redis in their environment and were comfortable using it, so we decided to build our system using Redis as the event sourcing layer. We saw Redis Streams on the horizon, but the Clojure language client, Carmine, didn't yet support the new Streams functionality. In the course of building our system, we ended up submitting pull requests both to Carmine and to Redis Docs to add support for Redis Streams. This talk will be mostly an experience report, with code examples in Clojure representing our Redis usage (via the Carmine client) both before Redis Streams became available as well as after changing the codebase (a surprisingly small amount) to use Redis Streams. We'll also dig into our architecture, including:

* how we were able to implement Event Sourcing and CQRS using Redis and Streams
* how we managed significant asynchronous processing by microservices behind our API
* how we aggregated current state in a separate data store
* how Redis Streams supported pushing changes to our ClojureScript/React user interface


Bobby is the founder of Evident Systems, which helps banks and credit unions put FinTech innovations into operations. Before Evident Systems, Bobby was on the Technology Fellows team at Capital One, where he designed and developed solutions to difficult problems, influenced the technical direction of Capital One while helping development teams implement that direction, and engaged the broader technical community via speaking and open-source contribution. Prior to Capital One, Bobby worked on the Product Team at Cognitect building, testing, and helping customers win with Clojure, ClojureScript, and Datomic.

Apple Corporate HQ

100 5th Avenue