Commands vs Events
Communication over a message bus is often done with Commands and Events. But, what's the difference between them? Aren't they both just messages?
Software Engineer
Command/Query Responsibility Segregation is about dividing a system into two subsystems -- a query system that can only read data and a separate command system that can only write.
Communication over a message bus is often done with Commands and Events. But, what's the difference between them? Aren't they both just messages?
Command-Query Separation and Command-Query Responsibility Segregation. Two design principles explained.
CQRS is really simple. Sometimes the idea gets conflated with other concepts such as Event Sourcing and DDD, but that is not CQRS. So, what is it then?
Those that have worked with me will know I'm a big advocate for Aspect-Oriented Programming. I generally like to "bolt on" concerns that sit outside of the main logic using the decorator pattern or some kind of behaviour that can wrap around a class or method, which follows the Open/Closed principle.
A lot of software engineering is about drawing boxes. That is, deciding how to break down the code we write. We don't just write everything in the Main
method. We set boundaries, create abstractions, and divide things into single responsibilities.
Explaining how I reason about the building blocks of Onion Architecture, Domain-Driven Design and Command Query Responsibility Segregation in an event-driven microservices architecture. How it all fits together in my head, the concepts they share, and the mistakes I've made along the way.