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.

Optimize Development Cold Start
“Development Cold Start” Impacts productivity, security, team morale, quality, availability more than you think.

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.

How to make software architecture trade-off decisions
How do you come up with the best software solution for a problem and pitch that choice to both your technical and non-technical peers in…

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.

Peer-to-peer choreography and orchestration
Designing event flows in an event driven microservice architecture

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.

How To Scale React Applications — Smashing Magazine
Due to rich web applications, scaling has become an important topic on the frontend. The frontend of a complex app needs to be able to handle a large number of users, developers and parts. Max Stoiber shares everything you need to now about React Boilerplate to get started.

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.

Cascading failures in large-scale distributed systems | Computer Science Blog
Internet service providers face the challenge of growing rapidly while managing increasing system distribution. Although the reliable operation of services is of great importance to companies such as Google, Amazon and Co., their systems fail time and again, resulting in extensive outages and a poor…

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.

Rapid Event Notification System at Netflix
This blog post gives an overview of the Rapid Event Notification System at Netflix and shares some of the learnings gained while building it

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.

Comparing quantiles at scale in online A/B-testing
TL;DR: Using the properties of the Poisson bootstrap algorithm and quantile estimators, we have been able to reduce the computational complexity of Poisson bootstrap difference-in-quantiles confidence intervals enough to unlock bootstrap inference for almost arbitrary large samples. At Spotify, we c

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.

Scaling Slack’s Job Queue - Slack Engineering
Slack uses a job queue system for business logic that is too time-consuming to run in the context of a web request. This system is a critical component of our architecture, used for every Slack message post, push notification, URL unfurl, calendar reminder, and billing calculation. On our busiest da…

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.

On building scalable systems | Kislay Verma
A deep dive into software scalability, strategies for building a scalable system, and adopting distributed system design as the key to scalability

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.

Mozilla’s vision for the evolution of the Web
The Web is an enormous asset and Mozilla is committed to protecting it and making it better. Powerful economic and technological forces have combined to make the Web the way it is today. Making it better won’t be easy and we can’t do it alone.

Brought to you by Vladimir @vvsevolodovich Ivanov and Ilya @puzan Zonov