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]

Refactoring Towards Resilience: Evaluating Stripe 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, I looked at a common problem in web applications - accepting payments via 3rd party APIs (in this case, Stripe). We saw a fundamental issue in our design - because Stripe does not participate in our transactions, any failures after a call [Read More]

New Year, New Blog

One of my resolutions this year was to take ownership of my digital content, and as such, I've launched a new blog at jimmybogard.com. I'm keeping all my existing content on Los Techies, where I've been humbled to be a part of for the past almost 10 years. Hundreds of posts, thousands of comments, and innumerable wrong opinions on software and systems, it's been a great ride. If you're [Read More]

Refactoring Towards Resilience: A Primer

Other posts in this series: A primer Evaluating Stripe Options Evaluating SendGrid Options Evaluating RabbitMQ Options Evaluating Coupling Async Workflow Options Process Manager Solution Recently, I sat down to help a team to put in some resiliency in a payment page. This payment page used Stripe as its payment gateway. Along with accepting payment, this action had to perform a number of other actions. Roughly, the controller action looked something [Read More]