RSS Amplifier

Blog

CodeOpinion

Software Architecture & Design

codeopinion-136111d.ingress-comporellon.ewp.liveRSS feed ↗20 posts

Latest posts

Decoupling in Software Architecture Moves Complexity

What happens when someone clicks the Place Order button? To the end user, it is pretty simple. It is a button click. But in a large system, there can be a lot going on behind that button. We have to save the order, record the payment, charge the customer’s credit card, reserve inventory, send a Read More Decoupling in Software Architecture Moves Complexity The post Decoupling in Software…

5 Software Architecture Mistakes That Make Systems Hard to Change

You can follow every enterprise best practice. You can use Clean Architecture, some type of layered architecture, event-driven architecture, microservices, or whatever else is popular. It can still end up in the same place. You have a system that is really hard to change. YouTube Check out my YouTube channel, where I post all kinds of content Read More 5 Software Architecture Mistakes That Make…

Multi-Tenancy Isn’t About Databases

You start off with what seems like the obvious solution to a multi-tenant SaaS application. We have tenant A. We have tenant B. We have one application and one database. Within that database, for every structure, whether that is a table, collection, or stream, we segregate things by a tenant ID. It is simple. It Read More Multi-Tenancy Isn t About Databases The post Multi-Tenancy Isn t About…

Resilience Patterns Can Make Your System Less Resilient

You wanted your system to be resilient, so you followed the standard advice. You added retries.You added circuit breakers.You added fallbacks. But now your system is less resilient. Not because those patterns are bad. They are not. The problem is they are doing exactly what you told them to do. YouTube Check out my YouTube channel, where Read More Resilience Patterns Can Make Your System Less…

Stop Blaming Event-Driven Architecture

So, you adopted event-driven architecture because your system was a rat’s nest of coupling, and events were the answer to decouple it. But now debugging is a nightmare. You have events coming in out of order. You have retries causing duplicates and multiple different side effects. Local development is a pain. It’s frustrating, right? But Read More Stop Blaming Event-Driven Architecture The post…

Solving the ‘God Object’ Problem with Shared Identity

You start with a simple entity. Then, over time, you add more and more properties. The next thing you know, you have a god object sitting at the center of your system. Everything touches it. Everything depends on it. Every workflow flows through it. And whenever you need to make a change, you hope it Read More Solving the God Object Problem with Shared Identity The post Solving the God Object…

Modular Monolith Boundaries Done Wrong

So you built a modular monolith. You have a clean structure. Different projects. Everything broken into modules. But somehow, when you make a change, it still ripples through the rest of your system. Why? Because its highly coupled. YouTube Check out my YouTube channel, where I post all kinds of content on Software Architecture Design, including Read More Modular Monolith Boundaries Done Wrong The…

Stop Joining Tables In Your “Modular” Monolith

Modular monoliths are all the rage. You have well defined modules built around business capabilities. Maybe inside those modules you are using something like Clean Architecture. You have separation of concerns. You have direction of dependencies. Everything looks great and you think, “Wow, finally I have a really good structure.” But do you? YouTube Check Read More Stop Joining Tables In Your…

Scaling Software Architecture Without Overengineering

Your system has 500 users and also has 20 microservices, including the gauntlet of Kubernetes, a message broker, distributed tracing, multiple different databases, and a pretty dashboard that probably nobody looks at. Someone will ask the question: why is this so complicated for 500 users? And usually the answer is, “Well, we’re building for scale.” Read More Scaling Software Architecture Without…

Why Sagas Feel Broken

So, you built an elaborate system with commands, queues, an event-driven architecture, retries, timeouts, and, most importantly, compensating actions all handled within sagas. But do you really? Because then you get a call from support. There’s an order where the payment is pending, and it’s been pending for 48 hours. You look into it and Read More Why Sagas Feel Broken The post Why Sagas Feel…

Debugging Event-Driven Systems: 5 Problems Teams Create

A post on Medium was shared with me by a member of my channel. A team went all in on event-driven architecture, and now they feel like they can’t debug anything. I get it, debugging event-driven systems can seem challenging. But it’s not directly because of event-driven architecture. It’s because of their misunderstanding of it Read More Debugging Event-Driven Systems: 5 Problems Teams Create The…

Just Use Postgres as a Queue?

I’ve noticed a trend, and a lot of people are saying the same thing: just use Postgres as a queue. No Kafka, no Redis, no RabbitMQ, just one database for everything. And I totally get it. I get the appeal. There are fewer moving parts. There is less infrastructure. There is only one thing to Read More Just Use Postgres as a Queue? The post Just Use Postgres as a Queue? appeared first on…

Testing Needs a Seam, Not an Interface

In my last video, I said that clean architecture was killing your velocity. And man, you guys had thoughts. The number one pushback, the hill a lot of people were willing to die on, was testing. And I get it. On the surface, it sounds reasonable. Create some interface or abstraction for testing purposes. But Read More Testing Needs a Seam, Not an Interface The post Testing Needs a Seam, Not an…

Why “Clean Code” is Killing Your Velocity

We’ve been told that clean code and deadlines are opposites. That if you want to ship fast, you have to write garbage code full of hacks. But if you want to get it right, you need to add boilerplate. That’s a lie. Here’s the thing: a lot of the so-called best practices people tell you Read More Why Clean Code is Killing Your Velocity The post Why Clean Code is Killing Your Velocity appeared first…

Is Event-Driven Architecture Overkill for Most Apps?

I get it. Most apps really are that simple. Typically, just CRUD. A user submits a form, you validate some data, save it in a database somewhere, and return a response. That is it. So is Event-Driven Architecture Overkill then? YouTube Check out my YouTube channel, where I post all kinds of content on Software Architecture Read More Is Event-Driven Architecture Overkill for Most Apps? The post Is…

Coding Isn’t the Hard Part

I keep seeing posts pushing back on the idea that coding isn’t the hard part. And I get why. A lot of the disagreement comes down to what people mean by coding. YouTube Check out my YouTube channel, where I post all kinds of content on Software Architecture Design, including this video showing everything in this Read More Coding Isn’t the Hard Part The post Coding Isn’t the Hard Part appeared…

Vertical Slices doesn’t mean “Share Nothing”

How do you share code between vertical slices? Vertical slices are supposed to be share nothing, right? Wrong. It is not about share nothing. It is about sharing the right things and avoiding sharing the wrong things. That is really the point. YouTube Check out my YouTube channel, where I post all kinds of content on Software Read More Vertical Slices doesn t mean Share Nothing The post Vertical…

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 Read More Read Replicas Are NOT…

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 Read More Your Idempotent Code Is Lying To You The post Your Idempotent Code Is Lying…

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 Read More You Can’t Future-Proof Software…