Amazon Prime Free Trial
FREE Delivery is available to Prime members. To join, select "Try Amazon Prime and start saving today with FREE Delivery" below the Add to Cart button and confirm your Prime free trial.
Amazon Prime members enjoy:- Cardmembers earn 5% Back at Amazon.com with a Prime Credit Card.
- Unlimited FREE Prime delivery
- Streaming of thousands of movies and TV shows with limited ads on Prime Video.
- A Kindle book to borrow for free each month - with no due dates
- Listen to over 2 million songs and hundreds of playlists
Important: Your credit card will NOT be charged when you start your free trial or if you cancel during the trial period. If you're happy with Amazon Prime, do nothing. At the end of the free trial, your membership will automatically upgrade to a monthly membership.
$59.99$59.99
Ships from: Amazon.com Sold by: Amazon.com
$29.99$29.99
Ships from: Amazon Sold by: America's Best Books
Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Functional and Reactive Domain Modeling First Edition
Purchase options and add-ons
Functional and Reactive Domain Modeling teaches you how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions.
Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.
About the Technology
Traditional distributed applications won't cut it in the reactive world of microservices, fast data, and sensor networks. To capture their dynamic relationships and dependencies, these systems require a different approach to domain modeling. A domain model composed of pure functions is a more natural way of representing a process in a reactive system, and it maps directly onto technologies and patterns like Akka, CQRS, and event sourcing.
About the Book
Functional and Reactive Domain Modeling teaches you consistent, repeatable techniques for building domain models in reactive systems. This book reviews the relevant concepts of FP and reactive architectures and then methodically introduces this new approach to domain modeling. As you read, you'll learn where and how to apply it, even if your systems aren't purely reactive or functional. An expert blend of theory and practice, this book presents strong examples you'll return to again and again as you apply these principles to your own projects.
What's Inside
- Real-world libraries and frameworks
- Establish meaningful reliability guarantees
- Isolate domain logic from side effects
- Introduction to reactive design patterns
About the Reader
Readers should be comfortable with functional programming and traditional domain modeling. Examples use the Scala language.
About the Author
Software architect Debasish Ghosh was an early adopter of reactive design using Scala and Akka. He's the author of DSLs in Action, published by Manning in 2010.
Table of Contents
- Functional domain modeling: an introduction
- Scala for functional domain models
- Designing functional domain models
- Functional patterns for domain models
- Modularization of domain models
- Being reactive
- Modeling with reactive streams
- Reactive persistence and event sourcing
- Testing your domain model
- Summary - core thoughts and principles
- ISBN-101617292249
- ISBN-13978-1617292248
- EditionFirst Edition
- PublisherManning
- Publication dateOctober 24, 2016
- LanguageEnglish
- Dimensions7.3 x 0.9 x 9.1 inches
- Print length320 pages
Frequently bought together
Customers who bought this item also bought
Editorial Reviews
About the Author
Product details
- Publisher : Manning; First Edition (October 24, 2016)
- Language : English
- Paperback : 320 pages
- ISBN-10 : 1617292249
- ISBN-13 : 978-1617292248
- Item Weight : 1.22 pounds
- Dimensions : 7.3 x 0.9 x 9.1 inches
- Best Sellers Rank: #2,335,067 in Books (See Top 100 in Books)
- #169 in Functional Software Programming
- #612 in Software Design Tools
- #724 in Software Design & Engineering
- Customer Reviews:
About the author
Discover more of the author’s books, see similar authors, read book recommendations and more.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonTop reviews from the United States
There was a problem filtering reviews right now. Please try again later.
- Reviewed in the United States on March 16, 2017A mind-blowing book that shows how to combine the beauty and orderliness of Domain-Driven Design (Eric Evans) with the purity and reasonability of functional programming and with the need for making your systems reactive. Covers some juicy category theory and abstract algebra principles without going too deep into the math.
- Reviewed in the United States on January 22, 2018This book covers an interesting topic and I do like a lot of the content but I think it has some big flaws that hamper the book:
* In the digital version you get if you buy directly from manning the figures/listings are very unreadable.
* The book takes the questionable decision of focusing a lot on examples from a particular domain (personal banking being a key one) using a single language (Scala). The code examples are also often quite important in understanding the details of whats going on, so if your Scala isn't strong you'll get less out of the book. I would have preferred if he started high level and domain/language agnostic then just provided examples that are domain and/or language specific.
* Given the code snippets are often unreadable and in a language you might not be familiar with the textual descriptions are vital. Unfortunately many of them are not that clear, to the point where you sometimes struggle to see what the author is saying. Often it isn't important as you get the gist of the message but it does make for a frustrating read.
Its a pity but whilst this book has value it is a frustrating read for anyone who isn't completely familiar with Scala.
- Reviewed in the United States on December 23, 2019This is the book you need to apply Scala functional programming in real world.
- Reviewed in the United States on October 10, 2017Cannot continuing reading it. The style of writing in this book is so poor that I have to put it down. Barely made it to chapter 3. Don't know if I can pick it up again. The problem is that there are too many transitions and references forward and backward to what was said in the last chapter, last section, last paragraph; to what will be covered next, in the next section, in the next chapter... Ugh. Too much of the author in it also. I don't want to read a technology book and keep remembering there's an author. It's like watching a movie and being constantly reminded that there's a director directing a film. If I wanted an author, I'd read fiction.
# # #
Some examples from chapter 2:
Section 2.3.1, "You've probably noticed that I've been using the term 'pure functions' in the context of modeling behaviors[1]. I did this in chapter 1 as well and explained how purity helps you reason about your functions. To recap, a function is pure if it doesn't have any side effects. And what's a side effect? A side effect is something that's not within the control of the function that you implement. If you're manipulating the filesystem... This section presents optimizations you can perform on your model..." The page has a footnote ([1]) that says this:"You've already seen the virtues of pure abstractions in chapter 1..." [Wouldn't a footnote suffice? Either keep the footnote and drop the reference from text. But don't keep both. It's too silly. Where's the editing here?]
Section 2.3.2, "In the previous section, you saw... [Are readers really suffering from such short term memory that they need to be reminded of what they just read?]
Section 2.4, "In this book when we discuss domain models, I'll talk about modeling... You'll need to have a clear understanding... This section doesn't start with the theory. Instead, it begins with examples that show you what I mean by ADTSs..." [How about we just get to it instead. And then the reader will probably have a better chance of remembering what s/he just read if that's even a concern.]
Section 2.6. "The side bar 'What is an effectful computation?' details what I mean." [Good gracious. If you have to call out your own sidebar, why not just bring it into the text and drop the side bar. The side bar is supposed to be like a parenthetical comment. It should stand outside the main line of reasoning or argument of the text.]
# # #
To be fair to the author, the fault of style falls squarely on the editor. To be fair to the editor, the style is so pervasive, it was probably hard to know where to begin and where to stop editing it. Feels like they did neither. But if they had done their job, the book would be shorter by about 1/3.
A good edit, a good index and appropriate footnotes would have been much more effective aids to the reader.
To be fair chapter 1 was a good read. Chapter 2 was so horrendous that I've lost interest.
- Reviewed in the United States on November 4, 2021I keep coming back to this book after working awhile in other areas of my teaching. I introduce this functional approach in my classes and, depending on the grad or ugrad level I am teaching, I illustrate concepts to various depths along the lines Ghosh has laid out. Yes, Ghosh does go deeply into FP via Scala, I appreciate that-- and yes, that introduces additional concepts such as Modules, ADTs, Functors and Monads, but hey, I can't keep doing only for loops forever! This functional mode of thinking has infused my grad classes in advanced databases as well as my advanced big data analytics class. Cheers!
- Reviewed in the United States on August 4, 2017- This is a book that's almost lyrical in the beauty and elegance with which it tackles an incredibly tough subject, actually three whole subjects, to be precise: Functional and Reactive Domain Modeling by Debasish Ghosh. What the author has accomplished with this stellar book is not for the faint of heart: It takes three strands—functional programming, reactive programming, and domain modeling—and manages to weave them into a tapestry of awesome.
- What I appreciated the most about this book is the thorough and pragmatic approach taken by Debasish to weave three topics—each broad (and deep) in their own right—into a coherent narrative, copiously illustrated by high-quality code that you can load into your IDE (I used IntelliJ IDEA) and run.
- The quality of this book is nothing short of amazing. for any fellow programmer who has bludgeoned their head over how much math they need—specifically, category theory—to really grok how to use these mathematical concepts of category theory in their daily programming—and apply salve to your hurting head—this book is a balm.
- For a more-detailed review, checkout my post by searching on the keywords "Programming Digressions Best Reactive Programming Books"
Top reviews from other countries
- itaratoReviewed in Canada on March 15, 2023
3.0 out of 5 stars Missing a lot of explanation
The book is proposing an interesting idea, however it fails to go into details, and without that it's just a functional programming agenda.
-
Bjoern BembnistaReviewed in Germany on August 30, 2020
5.0 out of 5 stars Durch Abstraktion von algebraischen Strukturen zu DSL und reaktiven Streams
Durch Abstraktion von algebraischen Strukturen zur deklarativen Programmierung von DSL und reaktiven Streams. Der Autor Debasish Ghosh trifft schon den Kern des Titels, nur setzt es etwas an Verständnis für FP voraus. Für all diejenigen die eine gut Vorstellung davon haben, worin sich die OOP zur FP unterscheidet und vielleicht sogar ein Gefühl für programmieren mit Funktionsparametern und der Kombination von Funktionen (Funktoren, Monaden) haben, wird das Buch eine Hilfe zu tieferem Verständnis bis hin zu Erleuchtung sein.
Ich selbst arbeite nicht mit Scala, habe hier aber ein sehr gutes Gefühl dafür bekommen, worin Scala im Vergleich zu Kotlin als Multi-Paradigmensprache stärker aufgestellt ist. Selbst die Stärken von Java (Typkonstruktoren) im Vergleich zu Kotlin (vom syntaktischen Zucker der Sprache abgesehen) ließen sich erkennen.
Ein großen Dank an den Autor.
-
Pascal H.Reviewed in France on July 7, 2019
5.0 out of 5 stars Le livre, la référence alliant DDD et programmation fonctionnelle dont je rêvais
Dès l'ouverture du livre, je fus agréablement surpris: pour moi qui voulais une version numérique mais avais dû finalement prendre la seule version papier disponible sur Amazon, une version numérique est disponible sur le site de l'éditeur (après enregistrement et utilisation d'une carte de codes dans le livre). La version numérique PDF (je n'ai pas essayé les autres formats epub ou mobi) est très agréable à l'écran. C'est un énorme plus pour moi (NB: la version numérique sera marquée de votre identité sur toutes les pages).
Par ailleurs, dès les premières pages, j'y trouve DDDesign + FP (+ Reactive) qui sont pour moi l'alliance moderne dans état de l'art du design et de la conception logicielle. Les exemples sont effectivement formulés en Scala et cela correspond aussi tout à fait au langage dans lequel j'envisage les mises en oeuvre.
Je n'en suis encore qu'au premier chapitre mais je sens déjà que c'est bien le libre, la référence que j'attendais depuis longtemps. Je suis arrivé sur ce livre par recommandation d'un ami. Je pense que je ne pourrais que l'en remercier.
- SesReviewed in Canada on October 21, 2017
3.0 out of 5 stars Good and useful at first 40%
Very good in the beginning but then too many functiona stuff. I would remove couple of chapter that is go too deep in functional programming. Eventhoug I like FP per se. Just saying there too much of it so it deviates you from the point of reactive, domain and modeling.
-
Dr. Gernot StarkeReviewed in Germany on November 5, 2017
3.0 out of 5 stars Title should be "Functional and Reactive Programming in Scala"
It's a Scala-Book with some functional and reactive programming - not "modeling"
in any software-engineering sense.
I was fooled by the title...
Without some (deep) Scala knowledge, you're lost.