Architecture Weekly #91 - 5th September 2022
Welcome to the new week!
Aggregates are shown something as a Holy Grail of software design. It's a helpful pattern but not the only one that can help you guarantee consistency. It's also not highly prescriptive. The worst thing is that its name may suggest that we should focus on aggregating data (like in Ye Olde UML diagram). It is only partially true, as the focus is on consistency, so ensure that all invariants are validated. Where the aggregation comes from, then? We aggregate all business changes to be saved at once. So the Aggregate pattern can also be thought of as the business transaction or business unit of work. When designing aggregates, we should focus on behaviour and the things we need to check. Once we have that, we can start thinking about how to shape our write model. I showed how to do that in practice and different styles of implementation in my recent article:
While preparing for my Wednesday’s conference talk, I reminded myself of one of the best terms I came up with: the CRAP Theorem.
It’s (unfortunately) a pretty popular interpretation of the CAP Theorem.
In it, we expect from our system:
- 100% consistency,
- 100% availability,
- 100% network partitioning tolerance.
I should probably invest in ™️ for this.
Last week, I learned a new English term: doxing. It also should get a poop image, but not the smiled one. There are pages like Kiwi Farms with people who have a hobby of harassing others and spend days locating and publicly sharing their addresses. It’s the pattern to bully them; the issue is especially with minorities. There are also companies like Cloudflare that seem to be hiding under the “free speach” and not taking responsibility for their services. Or actually, they do, but only after days or weeks of public pressure. The right to free speech doesn’t equal the right to free harassment. Read more:
Luckily, we can select providers based on our preferences, and we have options now.
Capabilities are also crucial for our applications. If we model them explicitly and share them with client applications, we may find that our design is much more straightforward. Check more in one of my favourite talks:
Batch processing stressed systems and handling a higher load are the hottest topics. I suggested some time ago that we should think more about scaling our system down. Yet, it’s undeniable that going up will always be important. Check more in:
Have you ever fixed a 23-year-old bug? Some Architecture Weekly readers are younger than that. Some people do that, read more:
Also, I’m a bit afraid, of the news I want to share, as the floppy disk is an icon of this humble newsletter, but: Japan is declaring war against floppy disks. Surprisingly, they’re still using them a lot, check:
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 Red Cross, the Ukraine humanitarian organisation. You may also consider joining Tech for Ukraine initiative.
Architecture
Alberto Brandolini - Collaborative Process Modelling with EventStorming
Happy Path Programming Podcast - The End of Ivory Tower Architecture with Andrew Harmel-Law
DevOps
Testing
AI
Hardware
.NET
Jon P. Smith - A .NET distributed cache with a ~25 nanosecond read time!
Andrew Lock - Using CancellationTokens in ASP.NET Core minimal APIs
Swift
Tools
WebAssembly
Coding Life
Joe Dunleavy - Contributing to open source - taking the dive
Amir Rachum - How to pick a starter project that'll make someone quit