Event Sourcing is emerging as a powerful technique to build systems that support retroactive processing. Instead of committing to the current state of the system, events let you reconstruct your system as of any particular timeline in the past. This leads to easier traceability of your system, helps you go back in time, fix errors retroactively and rebuild the timeline without losing any historical context.
Event sourcing can be implemented using the asynchronous model of computation that helps make systems scale easily. This is because events are typically stored once but need to cater to multiple consumers concurrently. One of the main tenets of event sourcing is to ensure a separation of the command and query models (CQRS). While the command store persists the events, they also need to be propagated to multiple consumers like the query model and any other downstream systems with which we interact. Actors are a good fit to manage this asynchronous processing. This section of the talk will discuss various examples from popular libraries like Akka and Finagle to establish how actor and future based models can help scale out your event based system. The next section of the talk will discuss how functional domain models that use data structures like type-lenses form a beautiful dual to event sourced systems.