Architecture Weekly #181 - 27th May 2024
Welcome to the new week! When you’re reading this article I’m currently at Domain Driven Design Europe conference doing 3-day workshop on Production Grade Event Sourcing. I’ve spent ton of time preparing for it, I hope that it’ll pay off for the attendees, and they’ll expand their knowledge on how to run Event Sourcing system efficiently. If you’re also at the conference and you see me walking around, please come and say hi, I’ll be happy to talk with you! In the 2nd edition of Papers We Love, we tackled the famous article Mel Conway’s article where he introduced his law. We’ve read the whole paper to check how up-to-date it is nowadays. Not surprisingly, it has stood the test of time. It’s a basis for properly modelling our system design and organizational structure. It impacted all current socio-technical approaches, such as Team Topologies, both agile and more rigid approaches. Watch (or listen as a podcast) the episode and drop me a note with your thoughts and experience facing the Mel Conway law. I’m sure you have plenty of them! Check also additional reading: "Just do left fold" or "Just apply event one after another" is common advice on handling messages and event-driven processing. They're fine from the logical perspective, but in production, you really need to do better. If you want to get proper performance and throughput, you'll eventually need to incorporate batching. AsyncEnumerable in .NET is a nice abstraction that allows you to handle both pull-based and push-based communication in a unified, straightforward way. Still, by default, it follows the "just do left fold" advice. In the latest article, I showed how to do better and handle batching in AsyncEnumerable without losing its clarity. What are your thoughts? To batch or not to batch? Staying on the messaging and event-driven design topic, let’s do a follow up from the two weeks ago. Adam Bellemare did a follow up on his article on fixing errors in event. One nitpick from me, I wouldn’t say that Event Sourcing is about deltas, I think that’s oversimplification. It’s about capturing what has happened, this may look close to delta, but it’s not. Those are all informations about business fact. Still, even with that the advice on the article are correct, even for Event Sourcing, so good job! Another follow up, this time from last week. We discussed wiping out by Google the whole customer Cloud account. They of course said that’s a rare experience. If you think that indeed such big issues cannot happen too often, Google will say “hold my beer”. Check the Register coverage:
Google did “maintenance automation intended to shutdown an unused network control component in a single location.’ And this time they didn’t wipe out customer account, but they 33 services in 40 regions for two hours and forty-eight minutes weren’t working correctly. I don’t even know how to comment it. Reading that, I’m happy that I didn’t have yet chance to work on Google Cloud. If you like networking post mortems check also the bug retrospective explained by Antithesis. Interesting is that’s a tool for finding bug. So it’s about finding a bug in a tool to find a bug. Bugception. Another follow up, Architecture Weekly doesn’t forget! 3 months ago we discussed Stripe Ledger, their own database build and optimised for storing financial data. It seems that’s fashionable, as Uber did the same. What’s more, they now moved the storage from DynamoDB into it and provided they case study. What’s Uber LedgerStore?
Sounds close to event stores, but it’s not the same. Let me quote my explanation (yeah, I know…) from discussing Stripe version:
Same apply here, still, let’s move on to explain how they did it. Uber's migration to LedgerStore involved transferring over a trillion ledger entries, which caused significant challenges around data integrity and system performance. To ensure accuracy, Uber used shadow validation, comparing outputs from the old and new systems to detect discrepancies and achieved a 99.99% accuracy rate. They tackled the large data volume by using Apache Spark for incremental backfill, processing data in chunks to avoid system overloads. Performance issues arose from poorly distributed index data and inefficient indexing methods that led to excessive full-record scans. To fix these, Uber optimized partition keys for better data distribution and revised their indexing approach to reduce unnecessary scans. So as always, indexes. Whatever database type you choose, that’s always a PITA. Continuing the databases, but more general usage. Mike Stonebraker and Matei Zaharia, so people behind the Postgres and Databricks decided to build an Operating System dedicated for data processing. Now they build a Cloud serverless data platform. Of course, you’ve heard that song, but having those people behind it make it worth checking out. They’re saying that it’s “a transactional serverless platform built on DBOS, targeting stateful Typescript applications”. They offer reliable execution and time travel. All of that on top of SQL. I’m not sure how far they’ll be able to go with it, but it’s an intriguing case, backed by the research on MIT and serious people. In the same way, you should check Mojo language, a Python-compliant Rust killer designed for AI solutions. Yeah, I felt like too much bs when I saw that, but then I listened the Developer Voices podcast episode with its creator: And then I realised that it’s the same guy that was behind Swift language and LLVM. Check this episode, Developer Voices is a nice geek-out podcast, that I recommend, and Chris is nicely explains the assumptions behind Mojo, and that kinda clicks! Speaking about languages, Kotlin 2.0 was released. Check more in the great coverage by Artur Skowroński, and if you’re into JVM, subscribe to his JVM Weekly. It’s great:
Ah, and React got compiler. Yes, R e a c t g o t c o m p i l e r. Times! And Angular 18 was released with a big set of improvements. I’m especially happy about Zone.js removal. I hate every minute of when I had to debug error routing me into Zone.js issue. 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
DevOpsDatabases
FrontendJavaKotlin
.NET
ToolsManagementInvite your friends and earn rewardsIf you enjoy Architecture Weekly, share it with your friends and earn rewards when they subscribe. |
Older messages
Architecture Weekly #180 - 20th May 2024
Monday, May 20, 2024
We started with an invitation to discuss Conway's Law. Then, we discussed recent Cloud provider mishaps. Well, one AWS mishap on the bill for a DDoSed S3 bucket and a nightmare from Google Cloud
Architecture Weekly #179 - 13th May 2024
Monday, May 13, 2024
This release has a few themes. We started with event-driven (yeah, surprise!), discussing the potential errors and ways to handle them. Then we checked if serverless cold-starts are THAT scary and
Architecture Weekly #178 - 6th May 2024
Monday, May 6, 2024
This time, we discussed biases. Biases on the perspective on our technologies, so not seeing their evolutions. We also checked how biases can impact our knowledge, collaboration and eventually also the
Architecture Weekly #177 - 29nd April 2024
Monday, April 29, 2024
How do you make predictions about tech without the magical crystal ball? We did that today by example. We analysed what Redis and Terraform license changes relate to the new Typescript framework Effect
Architecture Weekly #176 - 22nd April 2024
Monday, April 22, 2024
This week, we looked at mocking in tests and, more importantly, different shades of the load testing. We also discussed other tools that can help you reach the expected SLO. We looked at various
You Might Also Like
Daily Coding Problem: Problem #1648 [Medium]
Wednesday, December 25, 2024
Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Quora. Given an absolute pathname that may have . or .. as part of it, return the
🎮 The Best Games to Go With Your New Console — Streaming Services Could Learn From YouTube
Wednesday, December 25, 2024
Also: Don't Throw Christmas Gift Boxes on the Curb, and More! How-To Geek Logo December 25, 2024 Did You Know Years before The Nightmare Before Christmas, Tim Burton was sprinkling references to
Charted | Global Economic Confidence in 2025, by Country 🌎
Wednesday, December 25, 2024
While emerging markets in Asia have the strongest confidence in the global economy looking ahead, European countries are most pessimistic. View Online | Subscribe | Download Our App FEATURED STORY
Top Tech Deals 🎅 Sony Headphones, iPhone Cases, 4K Projector, and More!
Wednesday, December 25, 2024
The season of giving is upon us. How-To Geek Logo December 25, 2024 Top Tech Deals: Sony Headphones, iPhone Cases, 4K Projector, and More! The season of giving is upon us. Happy Holidays! If you're
Why the Race to AGI is Humanitys Defining Moment
Wednesday, December 25, 2024
Top Tech Content sent at Noon! Boost Your Article on HackerNoon for $159.99! Read this email in your browser How are you, @newsletterest1? 🪐 What's happening in tech today, December 25, 2024? The
Iran's Charming Kitten Deploys BellaCPP: A New C++ Variant of BellaCiao Malware
Wednesday, December 25, 2024
THN Daily Updates Newsletter cover The Data Science Handbook, 2nd Edition ($60.00 Value) FREE for a Limited Time Practical, accessible guide to becoming a data scientist, updated to include the latest
Software Testing Weekly - Issue 251
Wednesday, December 25, 2024
GitHub Copilot is free! 🤖 View on the Web Archives ISSUE 251 December 25th 2024 COMMENT Welcome to the 251st issue! In case you missed it — GitHub Copilot is free! The free version works with Visual
Daily Coding Problem: Problem #1647 [Medium]
Tuesday, December 24, 2024
Daily Coding Problem Good morning! Here's your coding interview problem for today. This problem was asked by Square. In front of you is a row of N coins, with values v 1 , v 1 , ..., v n . You are
Sentiment Analysis, Topological Sort, Web Security, and More
Tuesday, December 24, 2024
Exploring Modern Sentiment Analysis Approaches in Python #661 – DECEMBER 24, 2024 VIEW IN BROWSER The PyCoder's Weekly Logo Exploring Modern Sentiment Analysis Approaches in Python What are the
🤫 Do Not Disturb Mode Is My Secret to Sanity — 8 Gadgets I Want To See Nintendo Make
Tuesday, December 24, 2024
Also: The Best Christmas Movies to Watch on Netflix, and More! How-To Geek Logo December 24, 2024 Did You Know Their association with the Christmas season might make you think poinsettias hail from a