Szymon Pobiega used to work on various business software for almost a decade. Of all the ideas and petterns he learnt along the way, messaging had the most profound impact. He built his first micro service system with MSMQ and NServiceBus 1.9 some 9 years ago and this was a life-changing experience. Over three years ago Szymon quit consulting and joined Particular Software with hope to use his field experience to make NServiceBus even better. Szymon is focused, in Particular (pun intended), on message routing patterns and handling of failures. Besides that he enjoys building remotely controlled vehicles with Lego.
In modern systems data at rest has little value. It is all about message flows, the faster the better. Flows can carry either data or behaviour or both. They can be either horizontal (UI<->DB) or vertical (Sales<->Shipping). Let’s see how the dominating flow types affect systems -ilities.
“Modern scalable systems are message-driven. No matter if you learned Reactive Manifesto by heart, you are a fanboy of Event Sourcing or practitioner of Event Storming, the system you build is just a set of steams in which messages flow constantly.
If we look into the messages we can see they carry data, behaviour. We use to call the former the control flow and the latter, the data flow. These are also cases where there is a single flow that carry both control and data to act upon.
Let’s take a look at how some well-known architectural patterns such as layers or microservices and examine what types of flows they encourage. It turns out that, in addition to type, the flows also differ by direction: either vertical or horizontal. It almost seems like the architecture is defined by the flow.
Join me in exploring how different types of flows affect the coupling, one of the architecture’s key metrics.”