Of course distributed programming has been always hard, right? . It's true that you can distribute your computation on a bounded context basis but the problem usually arises when you need to scale a single bounded context and meet some consistency guarantees at the same time. It's when you typically end up relying on actor based computation, Akka Persistence, etc.
Precisely, you mentioned at the conference (great video by the way) that "using actors indiscriminately throughout your domain model makes algebraic reasoning hard". Yes, indeed!. What you win in terms of reasoning about concurrency you lose in terms of type safety and algebraic reasoning. At the end of the day, you end up writing code similar to the "summarizer" actor you depicted at the conference. Bad news...
I've been thinking lately if CRDTs could be the solution here, maybe in conjunction with Akka Streams. What do you think?.
