DDD Weekly: Issue #60

May 30, 2019

You are also opting in for interesting, DDD-related emails from buildplease.com

Patterns for Decoupling in Distributed Systems [twitter/blog] Mathias Verraes.

Consumer-driven Coupling: Patterns and Anti-patterns [blog] Nick Tune. Designing microservices can feel quite easy at times. And that’s because it is at first. However we slice our system and our teams, it usually works to begin with. The cost of poor design doesn’t begin to manifest until the system starts to scale. The feedback loop on sociotechnical design choices is long.

Hands-on Domain-driven Design - by example [book] Michael Plöd. This book aims to explain the concepts of Domain-driven Design in a way that it is easily applicable in practice. Each chapter contains a theoretical part which is explained from the point of view of practical applicability and then exercises with solutions based on a comprehensive, complex case study (real estate loans).

Reactive in practice: A complete guide to event-driven systems development in Java [blog] Kevin Webber, Dana Harrington. Design, develop, and deploy reactive systems in Java using event storming and domain-driven design.

EventStorming Team Flow [blog] Paul Rayner. If you map an entire value stream flow from “concept to cash” it is common to notice how small the development team part of the process is, and it is possible that the most damaging queues in terms of economic impact are upstream or downstream from the team. Once everything is mapped out, for non-trivial flows a common comment I hear is: “I had no idea we had so many queues.”

A facilitators recipe for Event Storming [blog] Donal Spring. Event Storming is a fantastic modelling workshop for getting shared understanding of a business domain and designing software to match. This is my guide to it.

TypeShape [gihhub] Eirik Tsarpalis. Practical generic programming for F#.

What went wrong with the IT-industry? [video] James Coplien. We like to point to software as the bad boy of professional disciplines — we build the wrong things, deliver late, and run up unbelievable costs. And we’ve been at this for 50 years. What’s wrong with us? Yet software delivers late half as much as construction projects do. For any project longer than 10 days software people are almost infinitely more accurate than the weatherman. We won’t talk about airline on-time departure performance. And, in terms of forecasting to within a week’s accuracy, pregnancy prediction is even worse.

An interesting perspective switch in #DDDesign is to consider the happy path a special case of a more complicated one and not the other way round. The magic happens when this preserves the #UX. [twitter] Alberto Brandolini.

ddd-by-examples [github] A comprehensive Domain-Driven Design example with problem space strategic analysis and various tactical patterns.

Celebrating 10 Years of Akka [blog] Jonas Bonér. Non-determinism might sound like a bad thing but is actually what enables concurrency, which together with the concept of stable addresses to stateful isolated processes allows actors to be decoupled in both time and space, supporting distribution, mobility, and location transparency.

Master of Aggregates [course] Szymon Kulec.

Akka.CQRS [twitter] Aaron Stannard. a reference architecture illustrating how to use @AkkaDotNET, Akka.Cluster.Sharding, DistributedPubSub, and Akka.Persistence.Query to create a fault-tolerant, highly available CQRS architecture.