DDD Weekly: Issue #41

September 1, 2017

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

Akka.NET v1.3 is Now Available on .NET 4.5 and .NET Standard 1.6 [blog] Aaron Stannard. Akka.NET v1.3 has been a work in progress since .NET Core was first released last year and is the culmination of hundreds of commits by dozens of contributors. You can read the official Akka.NET v1.3 release notes here, but what follows are my notes on some of the changes end-users can expect when adopting v1.3 and upgrading from earlier versions of Akka.NET.

You can’t fight Conway’s law [video] Avraham Poupko. This thought provoking talk explores the roots of the complexities through the prism of “Conway’s law”. In this talk Avraham presents some of the implications of Conway’s law as well as theoretical limits to the reduction of complexity. Understanding those limits can help us better focus expectations and hence our resources.

Interview with Russ Miles about Microservices [video] Alberto Brandolini, Russ Miles. Which are the biggest challenges you are facing with Microservices? Which are the common pitfalls and misconceptions when dealing with microservices?

The Hard Thing About Software Development [blog] Jesse Watson. The greatest misconception about software development is that it is a separable discipline from deep analysis of the business problem. We think all we need is an analyst who understands the business problem, a developer who knows how to code, then they can email a few notes or a specification. “Good to go”, right?

The Art of Discovering Bounded Contexts [video] Nick Tune. Everyone is talking about bounded contexts, but nobody can agree on what they are. Are they microservices? Do they contain the UI? Do they exist in the real world? What if bounded contexts are actually an incredibly powerful tool for enabling your entire organisation to go faster?

Reactive Microservices With Lagom and Java [blog] Markus Eisele. This Refcard helps you with your first steps in Lagom. Lagom is a framework that helps you to build reactive microservices.

Messaging as the Single Source of Truth [blog] Ben Stopford. So events solve two important architectural issues: (1) Managing real-world asynchronicity (2) Bringing together and manipulating datasets from different services. If we use a traditional messaging system to push events around, the events are ephemeral. They are sent, received and deleted without any form of ‘historic reference’. But what would happen if we kept these events around? The answer to this question is both interesting and formative: the events form a single source of truth, something most modern service estates are sorely lacking.

Curing you Domain Model Anemia with Effective & Clean Tips from the Real World [video] Edson Yanaga. Ever seen Service classes with hundreds or maybe thousands of LOC cluttered with validation logic, DAO access and some business code? Tired of getting NullPointerExceptions and having to check everything with if != null? Filled up of recurring bugs that could be prevented by unit tests, but your code is simply too clumsy to test effectively? Then you definitely should check this session.

Ubiquitous Language in a non-english domain [blog] Søren Birkemeyer. We are aware that this strong commitment to German might entail future costs of various kinds, if at any point German no longer were to be the intuitive choice of language for our team. However, we do not think it makes sense to accept very real issues like ambiguous expressions, misunderstandings and translation errors just to avoid theoretical problems in the future.

Value Object: a better implementation [blog] Vladimir Khorikov. This approach reduces the amount of repeating code in the derived classes and at the same time doesn’t exhibit the drawbacks of the implementation with the fully automatic comparison. You can still choose which fields you want to take into consideration. And if the value object contains collections, it will work too. All you need to do is enumerate all collection elements alongside with other properties.

WebEventStorming [tool] Adaptech

Introduction to Event Sourcing [video] Duncan Jones. This talk will show how Event Sourcing fits into the larger concepts of CQRS and up to DDD - with some discussion on how to host and use event sourcing in microservices.

Petri-Nets as Mental Model for Domain Driven Design [blog] Matthew York. This technique complements Domain Driven Design principles and further refines the practice of event-storming into a formal method. Using PNML defined algorithms as state machines allows for localized actors to draw very concise context boundaries around event handlers. Furthermore, by reducing the ‘statefullness’ of an application to mere vector addition, we can construct large systems that are easier to understand and validate.