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 | The Tallest and Shortest Countries, by Average Height 📏
Saturday, November 23, 2024
These two maps compare the world's tallest countries, and the world's shortest countries, by average height. View Online | Subscribe | Download Our App TIME IS RUNNING OUT There's just 3
⚙️ Your own Personal AI Agent, for Everything
Saturday, November 23, 2024
November 23, 2024 | Read Online Subscribe | Advertise Good Morning. Welcome to this special edition of The Deep View, brought to you in collaboration with Convergence. Imagine if you had a digital
Educational Byte: Are Privacy Coins Like Monero and Zcash Legal?
Saturday, November 23, 2024
Top Tech Content sent at Noon! How the world collects web data Read this email in your browser How are you, @newsletterest1? 🪐 What's happening in tech today, November 23, 2024? The HackerNoon
🐍 New Python tutorials on Real Python
Saturday, November 23, 2024
Hey there, There's always something going on over at Real Python as far as Python tutorials go. Here's what you may have missed this past week: Black Friday Giveaway @ Real Python This Black
Re: Hackers may have stolen everyone's SSN!
Saturday, November 23, 2024
I wanted to make sure you saw Incogni's Black Friday deal, which is exclusively available for iPhone Life readers. Use coupon code IPHONELIFE to save 58%. Here's why we recommend Incogni for
North Korean Hackers Steal $10M with AI-Driven Scams and Malware on LinkedIn
Saturday, November 23, 2024
THN Daily Updates Newsletter cover Generative AI For Dummies ($18.00 Value) FREE for a Limited Time Generate a personal assistant with generative AI Download Now Sponsored LATEST NEWS Nov 23, 2024
📧 Building Async APIs in ASP.NET Core - The Right Way
Saturday, November 23, 2024
Building Async APIs in ASP .NET Core - The Right Way Read on: my website / Read time: 5 minutes The .NET Weekly is brought to you by: Even the smartest AI in the world won't save you from a
WebAIM November 2024 Newsletter
Friday, November 22, 2024
WebAIM November 2024 Newsletter Read this newsletter online at https://webaim.org/newsletter/2024/november Features Using Severity Ratings to Prioritize Web Accessibility Remediation When it comes to
➡️ Why Your Phone Doesn't Want You to Sideload Apps — Setting the Default Gateway in Linux
Friday, November 22, 2024
Also: Hey Apple, It's Time to Upgrade the Macs Storage, and More! How-To Geek Logo November 22, 2024 Did You Know Fantasy author JRR Tolkien is credited with inventing the main concept of orcs and
JSK Daily for Nov 22, 2024
Friday, November 22, 2024
JSK Daily for Nov 22, 2024 View this email in your browser A community curated daily e-mail of JavaScript news React E-Commerce App for Digital Products: Part 4 (Creating the Home Page) This component