Imagine designing a ride-sharing app for autonomous vehicles, let’s call it Autonomo. It would need to integrate information from both vehicle owners and their vehicles’ availability as well as from riders requesting and completing rides. It would need to be a real-time streaming app with high consistency and availability, and low latency and great user experience. How would you design and build such an app? In this talk, we’ll explore both a recently-developed design methodology called Event Modeling and a novel event-based software architecture called the Domain Functions architecture. We’ll dig into the intersection of Event Modeling, Event Sourcing and CQRS, streaming apps and services, and the ideas behind the Domain Functions architecture. Motivated by use-cases from Autonomo, we’ll explore some of this architecture’s tradeoffs and benefits, including:

  • A functional programming take on Event Sourcing and CQRS that sidesteps the complexities of object-oriented DDD such as Aggregates and Sagas
  • The ability to translate an Event Model directly into working software using either an Event-based or a State-based approach to data storage and processing
  • The complete separation of the pure business domain logic from the complexities of distributed systems concerns like data transmission and storage, enabling both:
  • A truly reusable streaming application platform capable of running many different apps and services
  • Freeing line of business developers from battling distributed systems problems, and instead focusing exclusively on the logic of their business domain
  • The ability to re-use the business logic both server-side in APIs and stream processing apps as well as client-side in Web and Mobile UIs!
The Domain Functions Architecture: Build an Entire Streaming App by Writing Two Functions


Bobby Calderwood

Bobby Calderwood


Evident Stack

Bobby is the founder of Evident Systems and the creator of the Evident Stack (, which helps companies to design, implement, and operate event-based information systems at a fraction of the time and cost of legacy development methods. Before Evident Systems, Bobby was a Distinguished Engineer on the Technology Fellows team at Capital One. Prior to Capital One, Bobby worked on the Product Team at Cognitect building, testing, and helping customers win with Clojure, ClojureScript, and Datomic.