Domain Command Patterns - Validation

I don't normally like to debate domain modeling patterns (your project won't succeed or fail because of what you pick), I do still like to have a catalog of available patterns to me. And one thing that comes up often are "how should I model commands?": In general, apps I build follow CQRS, where I split my application architecture into distinct commands and queries. However, no two applications are identical [Read More]

Swagger, the REST Kryptonite

Swagger, a tool to help design, build, document, and consume RESTful APIs is ironically kryptonite for building actual RESTful APIs. The battle over the term "REST" is lost, where "RESTful" simply means "an API over HTTP" but these days is 99% of the time referring to "RPC over HTTP". In a post covering the problems with Swagger, the author outlines some familiar issues I've seen with it (and its progenitors [Read More]

Refactoring Towards Resilience: Process Manager Solution

Other posts in this series: A primer Evaluating Stripe Options Evaluating SendGrid Options Evaluating RabbitMQ Options Evaluating Coupling Async Workflow Options Process Manager Solution In the last post, we examined all of our coordination options as well as our process coupling to design a solution for our order processor. In my experience, it's this part of design async workflows that's by far the hardest. The code behind building these workflows [Read More]

Refactoring Towards Resilience: Async Workflow Options

Other posts in this series: A primer Evaluating Stripe Options Evaluating SendGrid Options Evaluating RabbitMQ Options Evaluating Coupling Async Workflow Options Process Manager Solution In the last post, we looked at coupling options in our 3rd-party resources we use as part of "button-click" place order, and whether or not we truly needed that coupling or not. As a reminder, coupling is neither good nor bad, it's the side-effects of coupling [Read More]

Refactoring Towards Resilience: Evaluating Coupling

Other posts in this series: A primer Evaluating Stripe Options Evaluating SendGrid Options Evaluating RabbitMQ Options Evaluating Coupling Async Workflow Options Process Manager Solution So far, we've been looking at our options on how to coordinate various services, using Hohpe as our guide: Ignore Retry Undo Coordinate These options, valid as they are, make an assumption that we need to coordinate our actions at a single point in time. One [Read More]