Architecture Weekly Issue #90. Articles, books, and playlists on architecture and related topics. Split by sections, highlighted with complexity: 🤟 means hardcore, 👷‍♂️ is technically applicable right away,  🍼 - is an introduction to the topic or an overview. Now in telegram as well.

WARNING 🇺🇦

It's already been a year and a half since Russia's crazy, brutal and unjustified war against Ukraine. We condemn this war and want it to stop ASAP. We continue this newsletter so you can advance your skill and help the millions of Ukrainian people in any way possible. If you want to help directly, visit this fund.

Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August, Roman, Egor, Roman, Evgeniy, Nadia, Daria and Dzmitry for supporting the newsletter. They receive early access to the articles, influence the content and participate in the closed group where we discuss the architecture problems. They also see my daily updates on all the things I am working on. Join them at Patreon or Boosty!  

Highlights

Fallacies of Distributed Systems 🤟

When somebody tries to design something distributed, they frequently make some bold assumptions about it, like that "network is reliable" or "topology does not change" . But those assumptions are false, and there is a set of them. Find out the illustrated list of distributed systems fallacies in the awesome post by architecture notes.

Fallacies of Distributed Systems
Fallacies of distributed systems are a set of assertions made by L Peter Deutsch and others at Sun Microsystems describing false assumptions that programmers new to distributed applications invariably make.

#distributedsystems

Nine Ways to Lost Data Using Serverless Without Even Knowing It 👷‍♂️

I am a personal fan of serverless solutions, because they are very frugal. However, you need to be careful at the same time, as SQS, DeadLetter Queues, DynamoDB filtering can contribute to your data being lost or at least be visible as lost. 9 edge cases which you definitely want to know about!

Nine Ways to Lose Data Using Serverless Without Even Knowing It
Designing a serverless system can be complex, and without knowing the internal workings of the services, you could easily lose the data.

#serverless

Death by a thousand microservices 🍼

This week I gave a talk about Frugal Software Architecture - the recording will be soon available - but the main idea was that the less components you have from the start, the easier it will be in the future. In this article the author actually proves my viewpoint, showing that the majority of startups which began with microservices setup was soon dead, but the ones who started simply and employed vertical scaling are thriving. Well, who could have thought.

Death by a thousand microservices
The software industry is learning once again that complexity kills

#microservices #frugality

Follow-Up

Using Apache Kafka to scale OpenTelemetry 👷‍♂️

If you're using OpenTelemetry collectors, then you may face issues when using it for high loaded servers. One of the options would be to have a chain of collectors, and another - using Kafka for that. Find out, why it is a viable option.

Maximizing Scalability - Apache Kafka and OpenTelemetry | SigNoz
The choice between OpenTelemetry Collector and Apache Kafka isn’t a zero-sum game. Each has its unique strengths and can even complement each other in certain architectures. The OpenTelemetry Collector excels in data gathering, compression, and filtering, making it a strong candidate for reducing in…

#observability #kafka

Guide to OpenTelemetry 👷‍♂️

Speaking about observability: if you are not aware what OpenTelemetry is and how widely it is used in today's observability solutions, please find a guide by Logz.io, where they explain the product overview, it's current state, basic and advanced concepts and recommendations.

Guide to OpenTelemetry
Start your journey with OpenTelemetry to generate and collect traces, metrics and logs from your system, with this useful tutorial and reference hub

#observability

Optimizing the databases at Quora 👷‍♂️

This is the continuation of the series where Quora is covering how their database setup with MySQL looks like. This one includes peculiar cases of optimization of database load. For example, they managed to change the cache key for user languages which resulted in 90% drop in db queries. For more examples and details, refer to the article.  

Optimizing the databases at Quora
Team: Vamsi Ponnekanti, Joungjin Lee, John Li, Mohammad Solaiman, Myungwoo Chun, and Hwanseung Yeo from core-infrastructure team. Jelle Zijlstra, Jian Gong, and Phillip Cole from other teams. BackgroundIn MySQL sharding at Quora we talked about our MySQL setup, and in Migration from HBase to ...

#db #casestudy

Investing 10% to pay back tech debt 🍼

Everybody agrees that tech debt is bad for ya. But selling the idea of spending time on tech debt to management rarely is an easy task for developers. Alex Ewerlöf shares the story how he joined the team with huge amount of debt and how the tradition of tech debt Friday improved the code base, boosted team morale and helped to build a better product.  

We invested 10% to pay back tech debt; Here’s what happened
Why and how we continuously invested the team bandwidth to pay back tech debt and what were the results?

#casestudy #techdebt

Switching Build Systems Seamlessly 🍼

or how Spotify increased Developer Experience when switched to Bazel. Spotify iOS app had already some build tooling, but the waiting time for builds were 80 minutes for P75. In Spotify they decided to migrate to Bazel build system to improve the DX, but they had to do that seamlessly and not interrupt the feature delivery. The story how they managed to do that - in Spotify's engineering blog.

#ios #mobile #build

Patterns for Developers and Architects building for the cloud 👷‍♂️

And the last for today: amazing collection of patterns and approaches to work with a cloud. Cloud adoption, scalable storage, microservices and many more recipies in this glossary. Enjoy!

Patterns for Developers and Architects building for the cloud
A set of Patterns for Developers and Architects building for the cloud

#cloud