Architecture Weekly #12
Architecture Weekly Issue #12. Articles, books, and playlists on architecture and related topics. Every record has the complexity indication: 🤟 means hardcore, 👷♂️ is technically applicable right away, 🍼 - introduction to the topic or an overview.
WARNING 🇺🇦
It's already a month and a half of crazy, inhuman, unjustified war of Russia 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 Ukranian people in any way possible.
Optimize Development Cold Start 🍼
Cold Start is what a new engineer should do before he is ready to make a meaningful change to the code. It impacts many parts of software development: productivity, quality, security, architecture cohesion, etc. This article provides a short checklist for Cold Start optimization.
How to make software architecture trade-off decisions 🍼
Short, but nice article on how to make a decision between several alternatives. I would add that instead of low-medium-high values for solution attributes, you can introduce weights and have a formula that accounts for them.
Orchestration vs peer-to-peer choreography 👷♂️
Originally we were looking at Dealing with long-running jobs with Kafka, but this article is mentioned there. Ever wondered what orchestration means in the event-driven microservice-based systems? It's about having a single Orchestrator service that emits commands. The opposite of that is having the microservices listen to the events emitted by other services and decide what to do. The details in the article.
How to Scale React Applications 👷♂️
This is an article for a Frontend Application Architecture. However, it provides a good overview on how to properly organize a React application to scale it from the feature and team perspective. Data Fetching, Code organization, Styling, etc - in the guide by legendary Smashing Magazine.
Cascading failures in large-scale distributed systems 🤟
Ok, this is a banger. An article begins with DynamoDB outage case study back in 2015. It describes the reason for the outage and introduces a way to visualize the links between different parts of the system called Casual Loop Diagram. It also provides technically applicable recommendations on fixing the failures and avoiding them in a first-place by avoiding anti-patterns.
Rapid Event Notification System at Netflix 👷♂️
Engineers from Netflix describe Rapid Event Notification System, which helps easily integrate notifications from the backend to customer devices. There is an extensive description of use cases, design decisions, and architecture. One interesting point: they use a hybrid Push&Pull communication model to support different types of devices: mobile, tv, web, and legacy devices too. Find all details inside.
Comparing quantiles at scale in online A/B-testing 🤟
Spotify works on improving the A/B-testing. One of the problems is the result inference from a large sample group. Typically the Bootstrap approach is used, but it is very computation heavy and hard to scale. Spotify suggests to use Poisson bootstrap to solve the problem.
Scaling Slack’s Job Queue 👷♂️
It is just a good and detailed example of incremental changes in Slack architecture. Four years ago Slack team integrated Kafka to control traffic and avoid OOM in Redis. They decided to keep logic around Redis and not replace one technology with another in a single step. Keep this approach in mind to iteratively modify your architecture to meet new requirements and data models.
On building scalable systems 🍼
There are hard limits to how fast our applications can run. Kislay Verma describes all aspects of scalability and how we can account for these limits. The main focus is on distributed systems. He collected related laws, scaling strategies, a few distributed approaches, and hard parts of distributed systems.
Mozilla’s vision for the evolution of the Web 🍼
Mozilla provides its vision of the future Web. The main aspects are related to privacy, safety, and accessibility. It is just a good exercise to check how your architecture can fit these requirements. And it is great if you can help to achieve described goals. The full, more detailed report is available.
Brought to you by Vladimir @vvsevolodovich Ivanov and Ilya @puzan Zonov