DDD Weekly: Issue #57

December 19, 2018

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

ThoughtWorks Technology Radar: Event Storming [blog] ThoughtWorks. When organizations move toward microservices, one of the main drivers is the hope for faster time to market. However, this aspiration only tends to be realized when services (and their supporting teams) are cleanly sliced along long-lived business domain boundaries. Otherwise meaningful features will naturally require tight coordination between multiple teams and services, introducing natural friction in competing roadmap prioritization. The solution to this problem is good domain modeling, and event storming has rapidly become one of our favorite methods for rapidly identifying the key concepts in a problem space and aligning a variety of stakeholders in the best way to slice potential solutions.

CQRS vs Specification pattern [blog] Vladimir Khorikov. These two Domain-Driven Design patterns – CQRS and the Specification pattern – contradict each other. And not just lightly, they are at odds in the most fundamental way.

Datomic: Event Sourcing without the hassle [blog] Valentin Waeselynck. When I got started using the Datomic database, I remember someone describing it to me as ‘Event Sourcing without the hassle’. Having built Event Sourcing systems both with and without Datomic, I think this is very well put, although it might not be obvious, especially if you don’t have much experience with Datomic.

Finding Humanity in Software [blog] Bryan Watts. This is part of why contemporary software doesn’t feel quite “right”. It is rooted in a spatial metaphor, an anachronism from the days of cramped CPUs. In today’s distributed, collaborative, reactive world, when is more important than where.

The Anemic Domain Model [blog] Guido Dechamps. In this blog post i will discuss the anemic domain model pattern in the context of an object oriented language. I’ll explain what the anemic domain model is, what it isn’t, how i view it. I’ll make use of a code example written in java and tested with cucumber.

Sysco LABS Methodologies: Modernizing Monolithic Architectures Through Domain Driven Design [video] Sysco Labs. The Product Discovery and Integration Services (PDIS) team is developing microservices to expose APIs that other developers can use to build their own applications. In this video, they share their ‘Domain Driven Design’ approach for converting a monolithic system to microservices.

EventStorming; Continuous discovery beyond software modelling [blog] Kenny Baas-Schwegler. The big pitfall of microservices architecture is to focus on the technology, how big the microservice needs to be, how many lines of codes, what entities do we put in a microservice, and using rest as the communication between them. But to succeed we need to focus on the problem space, by crunching domain knowledge and do domain modelling. EventStorming is a perfect fit for domain modelling, and almost all the microservices leaders seem to agree.

New – Amazon DynamoDB Transactions [blog] Amazon. Developers sometimes need to implement business logic that requires multiple, all-or-nothing operations across one or more tables. This requirement can add unnecessary complexity to their implementation. Today, we are making these use cases easier to build on DynamoDB with native support for transactions!

Distributed Transactions are dead, long live distributed transactions! [video] Sergey Bykov. As “we all know”, distributed transactions pretty much died with the advent of the Internet. Developers of cloud services have learned to cope with eventually consistent data stores and the Event Souring paradigm. But what to do when “eventual” is not enough?

Understanding the Whys, Whats, and Whens of ValueTask [blog] Microsoft. The .NET Framework 4 saw the introduction of the System.Threading.Tasks namespace, and with it the Task class. This type and the derived Task have long since become a staple of .NET programming, key aspects of the asynchronous programming model introduced with C# 5 and its async / await keywords. In this post, I’ll cover the newer ValueTask/ValueTask types, which were introduced to help improve asynchronous performance in common use cases where decreased allocation overhead is important.

Sociotechnical Architecture: Aligning Teams and Software for Continuous Delivery [video] Nick Tune. Model the wrong boundaries, and disaster is just around the corner waiting to tease your sanity. An excess of dependencies between modules will result in changes rippling across a fragile codebase at compile time, and that same web of dependencies means even just a small runtime error in one module has the potential bring the entire system crashing down.

Latency Numbers Every Programmer Should Know [github] Jonas Bonér.

Ethr [github] Microsoft. Ethr is a cross platform network performance measurement tool written in golang. The goal of this project is to provide a native tool for network performance measurements of bandwidth, connections/s, packets/s, latency, loss & jitter, across multiple protocols such as TCP, UDP, HTTP, HTTPS, and across multiple platforms such as Windows, Linux and other Unix systems.

Introduction to event sourcing and CQRS [video] Duncan Jones. An introduction to the idea of “Event Sourcing” and discussion of how you can use it as the basis for a distributed system with the emphasis on the underlying ideas rather than focusing on any specific framework or programming language. Beginner’s level talk, almost no code but mostly diagrams, discussion and Lego.