Skip to content

Read Replicas Are NOT CQRS (Stop Confusing This)

What’s overengineering? Is the outbox pattern, CQRS, and event sourcing overengineering? Some would say yes. The issue is: what’s your definition? Because if you have that wrong, then you’re making the wrong trade offs. YouTube Check out my YouTube channel, where I post all kinds of content on Software Architecture & Design, including this video showing everything in this post. “The outbox pattern is only used in finance applications where consistency is a must. Otherwise, it’s just overengineering.” Not exactly. “CQRS is overengineering and rarely used even at very high scale companies. One master DB for writes and a bunch of replica… Read More »Read Replicas Are NOT CQRS (Stop Confusing This)

Sponsor: Interested in learning more about Distributed Systems Design? Enter for a chance to win a 5 day Advanced Distributed Systems Design course led by Udi Dahan founder of Particular Software, and creator of NServiceBus.

Learn more about Software Architecture & Design.
Join thousands of developers getting weekly updates to increase your understanding of software architecture and design concepts.


Follow @CodeOpinion

Your Idempotent Code Is Lying To You

You have some code that handles placing an order. This could be an HTTP API or a message handler. You made it idempotent. You added a unique constraint on some kind of message ID. And somehow… you still end up double charging the customer’s credit card. YouTube Check out my YouTube channel, where I post all kinds of content on Software Architecture & Design, including this video showing everything in this post. Idempotent You did everything right. You have idempotency. You have an inbox table and a unique constraint on that message ID. Your handler should be exactly once, right? Wrong. And… Read More »Your Idempotent Code Is Lying To You

You Can’t Future-Proof Software Architecture

“Future proof your architecture” sounds good. But the reality is you can’t future-proof Software Architecture. When you really think about it, the future is just what’s breaking assumptions. You can’t really future-proof that. What you can do is contain changes so they don’t ripple through your system. Where people go wrong is trying to future-proof with abstractions everywhere. What you really want to be doing is controlling the blast radius, meaning controlling where change goes. YouTube Check out my YouTube channel, where I post all kinds of content on Software Architecture & Design, including this video showing everything in this post. I’m… Read More »You Can’t Future-Proof Software Architecture