Life Beyond Distributed Transactions: An Apostate's Implementation - Failures and Retries

Posts in this series: A Primer Document Coordination Document Example Dispatching Example Failures and Retries In the last post, we looked at an example of dispatching document messages to other documents using a central dispatcher. Our example worked well in the happy path scenario, but what happens when something goes wrong? We of course do not want a failure in dispatching messages to make the entire request fail, but what [Read More]

Vertical Slice Architecture

Many years back, we started on a new, long term project, and to start off with, we built the architecture around an onion architecture. Within a couple of months, the cracks started to show around this style and we moved away from that architecture and towards CQRS (before it had that name). Along with moving to CQRS, we started building our architectures around vertical slices instead of layers (whether flat [Read More]

Composite UIs for Microservices - Data Composition

Posts in this series: A primer Composition options Client composition Server composition Data composition In the last post, we looked at composing at the server side, both through composing through widgets/components, and then for data sources for a widget themselves, using model composition to pull data from multiple sources into a single model. In model composition, a single set of inputs fans out to multiple services for data, returned [Read More]

Composite UIs for Microservices - Server Composition

Posts in this series: A primer Composition options Client composition Server composition Data composition In the last post, we looked at techniques for composing on the client side. One of the issues we saw is there aren't really a lot of tools to perform composition, nor are there explicit building blocks to do so. The story is largely the same on the server side, where we don't have a lot [Read More]

Domain Command Patterns - Handlers

In the last post, we looked at validation patterns in domain command handlers in response to a question, "Command objects should [always/never] have return values". This question makes an assumption - that we have command objects! In this post, I want to look at a few of our options for handling domain commands: When I look at command handling, I'm really talking about the actual "meat" of the request [Read More]