Architecture Weekly #118 - 13th March 2023
Welcome to the new week!
Most of us transfer our habits to each new environment, and that’s dangerous. Take Event Sourcing, for example; it’s a storage pattern. What will happen if we take routines from modelling relational databases? Disaster.
Each storage pattern has its practices, relational databases - normalisation, document databases - denormalisation, and Event Sourcing - keeping streams short.
I talked about all of that in my talk at the Domain Driven Design conference last year. It was one of the most talks I’ve given so far, as this is an area that, unfortunately, is an extreme shortage of good resources.
How to handle two commands? or How to change two aggregates in one transaction? are one of the questions I'm asked most often.
The easiest answer is: "you don't". But it'd not only be a douche-like answer but half the truth. Why? Contrary to the common belief presented in the conference talks, we don't have only projects that have to scale.
I tried to cover dos and donts and show the thought process on how to tackle that in my new article:
Still, we’re not living and breathing, only patterns and practices. Design and planning are essential, but we won’t succeed without proper execution. It’s worth checking how others selected their tooling and analysing their journey and phase. It can give us food for thought on how to prepare our steps. See the journey that Discord went with their storage to support the extreme load they have:
The New Stack - How Discord Migrated Trillions of Messages to ScyllaDB
Discord - How Discord Supercharges Network Disks for Extreme Low Latency
Have a look also at a decent case study of scaling PubSub to the limits:
Finding the title for the talk is always fun; with the talk, I linked above, I’ve made an easter egg setting the longest title I could come up talking about keeping event streams short. Also, some people noticed my posh look, which was a bit unusual, but my friend Yves dared me to look like on my social avatar. I took the challenge.
I’m not sure what was the origin of the title that Greg Young did, but it’s the weirdest title I’ve seen so far. Yet, it’s also one of the best talks I’ve seen about a bi-temporal aspect of our systems and how Event Sourcing fits that. Must watch:
Last week we had World International Women's Day. Unfortunately, we still have a big diversity gap in our industry. It’s not as easy to just say, “well, it’s like”. It wasn’t always like that. I feel that we need to do more. Not just for the sake of the greater good but also because diversity makes better teams. The best teams I’ve been to were the most diverse ones. It’s not an accident; diversity builds creativity, a chance to clash ideas, to see different perspectives, and thus come up with better outcomes. Read more in:
Yaml doesn’t play well with anything. But it’s even worse in Norway? Why? See:
Check also other links!
Cheers
Oskar
p.s. I invite you to join the paid version of Architecture Weekly. It already contains the exclusive Discord channel for subscribers (and my GitHub sponsors), monthly webinars, etc. It is a vibrant space for knowledge sharing. Don’t wait to be a part of it!
p.s.2. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, and putting pressure on your local government or companies. You can also support Ukraine by donating, e.g. to the Ukraine humanitarian organisation, Ambulances for Ukraine or Red Cross.
Architecture
Oskar Dudycz - How to model event-sourced systems efficiently
Natan Silnitsky - How Wix Accelerated Open Platform Dev with Standardized APIs & Schemas
Greg Young - The Bizarre Mating Ritual Of The Whipnose Seadevil
The New Stack - How Discord Migrated Trillions of Messages to ScyllaDB
Discord - How Discord Supercharges Network Disks for Extreme Low Latency
Manas Chaudhari, Piyush Gupta - Building Pubsub for 50M concurrent socket connections
API
eBay - API Evolution Is a Challenge. Could Contract Testing Be the Solution?
Fran Mendez - Designing Event-Driven Architectures Using the AsyncAPI Specification
AI
AWS
Java
.NET
Oskar Dudycz - How to handle multiple commands in the same transaction
LEGO - The AsyncAPI.NET SDK contains a useful object model for AsyncAPI documents in .NET
Damian Edwards, David Fowler - Why your ASP.NET Core application won't scale