Skip to content

Sponsor: Do you build complex software systems? See how NServiceBus makes it easier to design, build, and manage software systems that use message queues to achieve loose coupling. Get started for free.

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

Architecture

Context is King: Finding Service Boundaries

Having explicit service boundaries is one of the tenets of SOA. Defining correct services boundaries is critical. I believe it’s one of the most important aspects of developing a system is finding service boundaries and it’s also really easy to get wrong. This blog series is intended as a guide for finding service boundaries within a domain for the system you’re developing. Finding Service Boundaries through Language Autonomous Services Focus on Service Capabilities, not Entities 4+1 Architectural View Model What’s a Service? Before I get too far ahead, I better clarify what “service” means to me so we can be… Read More »Context is King: Finding Service Boundaries

Is CQRS Complicated?

There are many misconceptions about CQRS. It’s often referenced alongside other patterns that can make it seem difficult and complicated. Is CQRS complicated? No. CQRS is simple. Really simple. What is CQRS? First, let’s tackle at the very core what CQRS actually is. CQRS stands for Command Query Responsibility Segregation and was coined by Greg Young. CQRS is related to CQS (Command Query Separation) principle by Bertrand Myer which states: Every method should either be a command that performs an action, or a query that returns data to the caller, but not both. In other words, a command is a… Read More »Is CQRS Complicated?

Orleans Smart Cache Pattern

I discovered the Orleans Smart Cache Pattern by listening to a talk by John Azariah and Sergey Bykov.  The idea is that you can use Orleans as a distributed cache in front of (permanent) storage.  This is really ideal if you have a read heavy system, which most are.  You could optionally also choose to buffer your writes when you make state changes.  Ultimately you will reduce load on your storage by accessing data/state from memory. Blog Post Series: Part 1 – Practical Orleans Part 2 – Grains and Silos Part 3 – Smart Cache Pattern Part 4 – Event Sourced… Read More »Orleans Smart Cache Pattern