DDD Weekly: Issue #48

November 1, 2017

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

Concurrent commands in event sourcing [blog] Michiel Rook. In this post I want to talk a little about concurrency in the context of CQRS and event sourcing. Specifically, when a single aggregate is concurrently accessed by two commands (or command handlers, really).

Publishing with Apache Kafka at The New York Times [blog] Boerge Svingen. … this is a new way of building applications, and it requires a mental shift for developers who are used to working with databases and traditional pub/sub-models. In order to take full advantage of this setup, we need to build applications in such a way that it is easy to deploy new instances that use replay to recreate their materialized view of the log, and we are putting a lot of effort into providing tools and infrastructure that makes this easy.

Incrementally refactoring a monolith into microservices [video] Chris Richardson. Learn about an approach that will subdue your monolithic application in stages.

Many Kinds of Messaging with Clemens Vasters [podcast] .NET Rocks w/ Clemens Vasters. There are so many messaging options in Azure, how do you choose? While at ProgNet in London, Carl and Richard sat down with Clemens Vasters to talk through the strengths and weaknesses of each messaging service. Clemens has been part of every messaging product in Azure, starting with Service Bus more than ten years ago. He discusses how customer needs and increasing demands in messaging resulted in making more specific products like Event Hub and IoT Hub. Azure Event Grid also fits a specific role in the discussion, making it easier for you to create message-driven workflows. Trying to sort out messaging in Azure? Clemens has the answers!

Vladik Khononov- Tackling Complexity In Large-Scale Marketing Systems [video] Vladik Knononov. I will show how DDD allowed us to manage complexities, talk on different strategies for defining context boundaries that we’ve used, and of course, the things that we have learned the hard way - by making our own mistakes.

The bare minimum a distributed system developer should know about networking [blog] Oren Eini. …when we are developing internally, you’ll typically use either machine names or IP addresses and you’ll typically consider a flat network view, not the segmented one that is actually in place. Docker and containers actually make you think about some of that a lot more, but even so most people don’t consider this too much.

Using DDD, CQRS, Event Sourcing With A Vague, Fast Changing Domain [blog] Mike Mogosanu. Every business changes in time, the only difference is the pace. When dealing with a new, vague, volatile domain the pace is very fast but in the end you’d have the same issues you’d have when the domain changes at a slower pace. It’s harder because you have to grow yourself into a Domain Expert but from an application design and implementation point of view, things will be very similar. In the end, what makes the app maintainable is how we’ve applied the principles behind DDD/ES/CQRS. Recipes, libraries and frameworks are just tools that should be used according to the above-mentioned principles.

The Ugly of Event Sourcing–Real-world Production Issues [blog] Dennis Doomen. Event Sourcing is a beautiful solution for high-performance or complex business systems, but you need to be aware that this also introduces challenges most people don’t tell you about. After having dedicated a post on the challenges of dealing with projection migrations and how to optimize that, it is time to talk about some of the problems that can happen in production.

The Dark Side of Event Sourcing: Managing Data Conversion [paper] Michiel Overeem, et al. Evolving software systems includes data schema changes, and because of those schema changes data has to be converted. Converting data between two different schemas while continuing the operation of the system is a challenge when that system is expected to be available always.