Architecture Weekly #81 - 27th June 2022
Welcome to the new week!
Last week was special for me; I debuted as a speaker at the Domain-Driven Design conference with the talk “Keep your streams short! Or how to model event-sourced systems efficiently”. I explained how the fact that adding a new event after each business operation impacts our domain model design. In Event Sourcing, events are grouped into a sequence of events called streams. The more events we append, the longer streams get. Even though event stores are pretty good at reading long streams, it may impact our application performance. Snapshots are shown as a potential saviour, but they’re just postponing when we learn that we screwed our design. Then it’s usually too late. The essential is to think about the model in the temporal context and break it down into smaller slices (e.g. stream per cashier shift instead of stream per all transactions in cashier register). The feedback was positive, so I’m happy that I’ve made it, especially in the context that I was right after COVID and didn’t have as much time for preparation as I’d like to. If you want to see the recording of my rehearsal, join the paid version of Architecture Weekly, and I’ll send it to you.
This year I also did an extended relation showing what was happening, trying to bring some of the conference vibes. See the thread of threads with coverages from all of the conference days.
Didn’t I tell you that I was busy? I also wrote a new article about Unobvious things you need to know about key-value stores.
OK, enough about me!
Yet, if you’re not fed up with temporal thinking, check
I’ve seen this talk live last year, and it’s a superb explanation of time aspects in software design.
If you’d like to see extraordinary storytelling and an unusual way of speaking about the tech, check:
In a similar spirit, so explaining how our systems evolve and how we can predict that using tools like Wardley Maps, check:
Btw. boundaries, Context Maps, Wardley Maps and aligning that with teams structure were among the leitmotifs of the DDDEU. We’re getting more tooling around strategic thinking and design, which is excellent. Especially since they’re based on real-world heuristics, they’re not just buzzwords anymore.
Speaking about tooling, I just realised that Mermaid supports the C4 model:
Keeping in mind, that Mermaid diagrams are supported natively by GitHub Readme’s and even C# Interactive, it’s slowly becoming a standard for static diagrams.
Last but not least, have a listen on:
It’s a short and funny one, talking about the joy of programming and digging out the old (almost) forgotten tools. Yet, it also has more layers, e.g. how the big enterprise companies like Microsoft decision-making process works, about the changes (with reasoning) in dev tooling, and also even philosophical of what’s nostalgia. Must listen!
Check also more links below!
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. This is a great 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 Red Cross, the Ukraine humanitarian organisation. You may also consider joining Tech for Ukraine initiative.
Architecture
Susanne Kaiser - Building Adaptive Systems For a Fast Flow of Change
Adam Furmanek - Ordering the chaos - cleaning logs and ordering events in microservices
Gandalf Hudlow - The value destroying effect of arbitrary date pressure on code
Databases
Oskar Dudycz - Unobvious things you need to know about key-value stores
Azure Cosmos DB - Data modeling & partitioning: What every relational database dev needs to know
Amit Kapila - Logical Replication Improvements In PostgreSQL-14
DevOps
Testing
Azure
Java
.NET
Sean Killeen - .NET OSS Maintainer Support Survey – The Results!
Jérémie Chassaing - eskv - In-memory key/value and event store, for educational purposes