From Functional to Reactive - Patterns in Domain Modeling

A domain model built on the principles of functional programming already has the goodness of immutability, compositionality and modularity. In this talk we demonstrate how to make functional domain models reactive, i.e. how to make them more responsive, elastic, resilient and scalable. We start with a sample use case implemented using FP in Scala and use the power of the type system to make the functions reactive without compromising on compositionality. We show several patterns of being reactive while designing domain models and discuss their pros and cons. Finally we talk about the streams model that help implement reactive domain behaviors using typed composable APIs, principled failure management and resilient distribution across clusters.