Function and Reactive Domain Modeling

Function and Reactive Domain Modeling

Book Title: Function and Reactive Domain Modeling

Author: Paul Chiusano

Format: Paperback | 320 pages

Publication Date: 01 Nov 2016

ISBN-13: 9781617292248

Functional and Reactive Domain Modeling teaches readers how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions. It begins with the basics of functional

programming and gradually progresses to the advanced concepts and patterns needed to implement complex domain models. The book demonstrates how advanced FP patterns like algebraic data types,

typeclass based design, and isolation of side-effects can make models compose for readability and verifiability.

On the subject of reactive modeling, the book focuses on higher order

concurrency patterns like actors and futures. It uses the Akka framework

as the reference implementation and demonstrates how advanced

architectural patterns like event sourcing and CQRS can be put to great

use in implementing scalable models. It offers techniques that are

radically different from the standard RDBMS based applications that are

based on mutation of records. It also shares important patterns like using

asynchronous messaging for interaction based on non blocking

concurrency and model persistence, which delivers the speed of inmemory

processing along with suitable guarantees of reliability.

Key Features:

Illustrates idioms and best practices
Starts with Functional Programming basics
Progresses to advanced concepts and patterns
Offers radically different techniques from the standard RDBMS


Written for developers and architects comfortable with the basic ideas
of functional programming and traditional domain modeling. No prior

exposure to Akka or reactive application design is expected.


Domain modeling is a technique for creating a conceptual map of a problem

space such as a business system or a scientific application, so that developers

can write the software more efficiently.

Reactive application design, which uses functional programming principles

along with asynchronous non-blocking communication, promises to be a

potent pattern for developing performant systems that are relatively easy to

manage, maintain, and evolve. Typically such models are called "reactive"

because they are more responsive both to user requests and to system loads.