Skip to content

Domain Events Are NOT Your Public API

You finally did it. You stopped publishing CRUD events and started broadcasting domain events. Instead of publishing ShipmentStatusChanged, ShipmentUpdated, or EstimatedDeliveryDateChanged, you started publishing more meaningful domain events like DeliveryAttemptFailed, ETARecalculated, and ShipmentDelayed. And apparently that was supposed to be better, right? Wrong. 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. You’re publishing domain events now rather than CRUD events. But you still feel all the pain when you need to change one of those events. You’re breaking consumers, sometimes consumers you didn’t even… Read More »Domain Events Are NOT Your Public API

Event Driven Architecture and Coupling: You’re Not as Decoupled as You Think

So, you broke apart your monolith. You introduced a message broker. You’re using event driven architecture. Events are flying everywhere. You’re decoupled now, right? But somehow nothing feels any better because your system is still really brittle. 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. CRUD Events The problem might be the events you’re publishing: ShipmentStatusChangedShipmentAddressUpdatedEstimatedDeliveryDateChangedCarrierIdUpdated Every other service subscribes to these events and maintains its own local copy of shipment data. You might think you’re decoupling your system because you’re publishing events to… Read More »Event Driven Architecture and Coupling: You’re Not as Decoupled as You Think

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 confirmation email, and maybe record loyalty points. There may also be analytics, recommendations, or other processes that react to the order. Because there are so many things happening, there are also a lot of things that can go wrong. We are often told that decoupling… Read More »Decoupling in Software Architecture Moves Complexity