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]

Refactoring Towards Resilience: Evaluating RabbitMQ 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 dealing with an API in SendGrid that basically only allows at-most-once calls. We can't undo anything, and we can't retry anything. We're going to find some similar issues with RabbitMQ (although it's not much different than other messaging systems) [Read More]

Refactoring Towards Resilience: Evaluating SendGrid 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 found we had the full gamut of options for coordinating our distributed activity: We could ignore the failure (and have money floating in the ether), retry using an idempotency key, undo via a refund, or coordinate using the auth/capture flow [Read More]