Architecture Weekly #163 - 22nd January 2024
Welcome to the new week! Last week, I wrote that we should not optimise our code for reusability. We should reflect our business process as it is to run it efficiently. The size of the code is orthogonal to that. We do not always cut all redundancies; sometimes, we add them.
Just like we're designing our code with the reader in mind, we should also design our events. We need to remember that domain logic is just one of the usages. We also record those events to build read models and integrate them with other parts of the system. Read more in my article to find the nuanced explanation of those considerations. Events (schema) versioning is a boogeyman for people learning Event Sourcing. They’re a spooky tale told at the campfire. There’s a truth in it, as migrations are always challenging. As time flows, the events’ definition may change. Our business is changing, and we need to add more information. Sometimes, we have to fix a bug or modify the definition for a better developer experience. I invite you to the next webinar for Architecture Weekly paid subscribers: “Simple patterns for events schema versioning”. This time no special guest, but me, but I hope that’s also fine! I’ll show you them in practice, getting hands dirty in code. I’m sure that after this webinar, the common scenario won’t be too scary for you. It’ll also be a good chance to discuss and ask questions on unclear scenarios. So webinar, is not quite clear, I intend to have interaction! The webinar will happen on Thursday, January 25th, at 6 PM CET (UTC+1) and last 1-1.5h depending on the number of questions. Read more all the details: Become a paid subscriber and join us live! The talk that I probably enjoyed the most in the last Domain-Driven Design Europe was the one by Andreas Pinhammer. Why? Many people ask me how to apply DDD in a "real project" or introduce it to a "large existing project". This talk gives a decent case study and a fresh look. Andreas explained their journey of introducing DDD to the complex Insurance domain. He showed how they tried to apply later-the-greatest and recommended tooling. He explained how they stumbled on that and what they eventually came up with. I liked the conclusion around the platform team and that, in their case, it wasn't "kubernetes-and-all-that-technical-stuff-core-team", but more a business back-office focused on enabling other business modules for other business teams. I think that's how it should be done. Watch the talk; it's crisp, just 38m. It's not revolutionary, but it nicely explains how you can start applying DDD and what to watch for. In the same spirit, check also an excellent article from Ryan Shriver showing how Domain-Driven Design tools can help you modernise architecture. I liked that it presented the context in which tools like the C4 Model, Event Storming, and Message Flows and Bounded Context diagrams can play together and when to use them: In architecture modernisation, it’s essential to understand what to leave as it is, what to polish, and what to rewrite. I don’t like term tech debt; I think that it’s looking at the real problem from the wrong perspective. That’s something that I’ll cover at some point here or on the blog. Nevertheless, the issue is real, no matter how we phrase it. I liked the take from Pete Hodgson on this topic: He explained his approach called “Tech Debt Wall”
Read the article to understand how to build it and look on the graphical examples. Speaking about modernisation. Martin Fowler updated his guide on Continuous Integration. It’s a revamped one adjusted to modern practices. One of the updated pieces is a guide around code reviews and feature branches:
I don’t entirely agree with this part. I think the biggest issue comes when such a review happens on a long-living branch with many changes. I think that throwing away code reviews before merging is not a solution on its own, as people still may not find time and not even feel motivated to do it. The process is not as simple as choosing if we’re doing code reviews before or after the merge. Incidents are often triggers for changing the process and architecture that happened to Slack. They had a major network disruption that caused cascading failure, even though they used multiple availability zones (AZ) for deployment. The isolation appeared not as good as it should have been, and a single AZ failure led to significant user-visible disruptions. To address this, Slack adopted a "siloing" strategy, where each AZ operates independently, reducing the impact of localized failures. They based that on AWS Cell-Based architecture. The core innovation was the introduction of an "AZ drain button," enabling quick traffic rerouting (“draining”) away problematic AZs. As they wrote:
This was achieved through the Envoy xDS ecosystem, allowing for efficient traffic management. This cell-based approach has enhanced Slack's system resilience, ensuring that issues in one AZ don't affect the entire network. Staying with the materials provided by the tools creator, but jumping to another topic: modelling. I see that many people struggle to model the denormalised model correctly. For many years, we were taught how to normalise our storage for relational databases. That got so much into our skin that we try to keep those practices even though most cloud-native databases do not match them. There are not many great resources around key-value storage modelling. One of those that I could recommend is materials from MongoDB: Of course, they’re biased by the tool perspective, but if you’re looking for a decent starting point, they’re a decent place to do it. I’ll end this release with the call for responsibility. Have you heard about the UK Post Office scandal? You really need to check the coverage:
The intriguing part is that the software is still used. As our industry progresses, our responsibility should also progress. Also, the quality of delivery. Now I’m curious about those systems that will come by putting prompts into “Generative AI”. Unfortunately, I foresee even worse complications. See also the whitepaper with a well-speaking title from Adam Tornhill and Markus Borg. It concludes with:
Check also other links! Cheers! 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
DevOpsFrontendHardware
AIAWSAzureJava.NET
TypeScriptCoding LifeManagementIndustryYou're currently a free subscriber to Architecture Weekly. For the full experience, upgrade your subscription. |
Older messages
Architecture Weekly #162 - 15th January 2024
Monday, January 15, 2024
We started with getting back to Leslie Lamport's works, Cynefin and added Wardley Mapping to the game. We discussed how to and how to not think about our decisions and strategy. Also for product
Architecture Weekly #161 - 8th January 2024
Monday, January 8, 2024
Welcome to the new week! We started today with big words like Complexity and followed them with even smarter-sounding words like Cynefin and TLA+. We explained why those decision-making frameworks are
Architecture Weekly #160 - 1st January 2024
Monday, January 1, 2024
First day of the New Year, and the first edition! This time, we're reflecting on the state of our industry and starting with the Reuters report about Tesla's weak quality practices. We're
Architecture Weekly #159 - 25th December 2023
Monday, December 25, 2023
In the last release of 2023, we checked both past and new things. Learn about what Netlify thinks about the state of web development, Jepsen about MySQL guarantees, and more about PostgreSQL isolation.
Papers We Love #1 - Sagas (Hector Garcia-Molina, Kenneth Salem)
Thursday, December 21, 2023
Watch now (142 mins) | The first edition of Papers We Love meetups started with the “Sagas” whitepaper by Hector Garcia-Molina and Kenneth Salem. It's a famous work that is foundational for
You Might Also Like
Ranked | Which Country Has the Most Billionaires in 2024? 💰
Thursday, May 2, 2024
According to the annual Hurun Global Rich List, the US and China are home to nearly half of the world's 3279 billionaires in 2024. View Online | Subscribe Presented by: The economy is changing. Is
⚙️ Rovo
Thursday, May 2, 2024
Plus: Microsoft are (were?) terrified of Google's AI
Have VPN connection issues? This might be why
Thursday, May 2, 2024
DJI Power station; Studying with AI; Best gaming PCs -- ZDNET ZDNET Tech Today - US May 2, 2024 placeholder Having VPN connection issues? Microsoft warns the April 2024 Windows update is to blame If
Programmer Weekly - Issue 203
Thursday, May 2, 2024
View this email in your browser Programmer Weekly Welcome to issue 203 of Programmer Weekly. Let's get straight to the links this week. Quote of the Week "The hardest part of design is keeping
Python Weekly - Issue 648
Thursday, May 2, 2024
View this email in your browser Python Weekly Welcome to issue 648 of Python Weekly. Let's get straight to the links this week. News Fake job interviews target developers with new Python backdoor A
A new approach to access management for the way we work today
Thursday, May 2, 2024
Announcing 1Password® Extended Access Management ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Web Tools #563 - Frameworks, JSON/DB Tools, Vue, Nuxt.js
Thursday, May 2, 2024
WEB VERSION Issue #563 • May 2, 2024 Advertisement The Complete JavaScript Course 2024: From Zero to Expert This is an up-to-date JavaScript course covering modern techniques and features that will
Venture capitalists love musical chairs
Thursday, May 2, 2024
A number of investors have been swapping gigs and bouncing from prior employers to build new investing groups. View this email online in your browser By Alex Wilhelm Thursday, May 2, 2024 Good morning,
Gemini in Android Studio and more: Android Studio Jellyfish is Stable!
Thursday, May 2, 2024
View in browser 🔖 Articles Gemini in Android Studio and more: Android Studio Jellyfish is Stable! Android Studio Jellyfish (2023.3.1) is making waves with its official stable release! 🪼🌊 Dive into
wpmail.me issue#665
Thursday, May 2, 2024
wpMail.me wpmail.me issue#665 - The weekly WordPress newsletter. No spam, no nonsense. - May 2, 2024 Is this email not displaying correctly? View it in your browser. News & Articles Why Should You