Architecture Weekly #20

Architecture Weekly Issue #20. 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. Now in telegram as well.

WARNING 🇺🇦

It's already 102 days 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 Ukrainian people in any way possible.

Mind maps of architecture books 🍼

Ilya Zonov, of the authors of this newsletter is doing the mindmaps of the software architecture-related books. This activity started during the book club, but now it represents a good map of the related books useful in understanding and remembering the book themselves. Don't forget to star the repo!

GitHub - puzan/book-maps: Mind Maps for books read
Mind Maps for books read. Contribute to puzan/book-maps development by creating an account on GitHub.

Step by step Event Storming Description by IBM 🍼

Event storming is a great technic to understand the business domain and ensure the software solution will properly fulfill the functional requirements with proper share of responsibilities. IBM in their architecture blog describe how to conduct the workshop, what roles are required and what artifacts you gonna get.

New faster in-memory storage 👷‍♂️

Redis and Memcached are some sort of the standard in in-memory data storage technology domain. Dragonfly is a new opensource alternative to them. The authors claim that their solution works much faster due to usage of innovative algorithms. More details in the repo.  

GitHub - dragonflydb/dragonfly: A modern replacement for Redis and Memcached
A modern replacement for Redis and Memcached. Contribute to dragonflydb/dragonfly development by creating an account on GitHub.

How to learn distributed systems 🍼

We typically include Murat Demirbas paper reviews; this time it's time for his old post on how to approach learning of distributed systems. The post includes the description of problems which differentiate the single-node based systems from distributed ones which provides a meaningful insight for learning.

Learning about distributed systems: where to start?
This is definitely not a “learn distributed systems in 21 days” post. I recommend a principled, from the foundations-up, studying of distrib...

Backward compatible releases with Blue-Green approach, Django example 👷‍♂️

Good article on the backwards migration. It uses django as an example, but it could be written with any other technology. Main takeaway from the article is that use can not have blue-green deployments without backward compatible db migrations; more details inside.

Introduction to Availability Testing 👷‍♂️

Testing non-functional requirements is critically important for the success of software; this time we want to include an article on understanding what is an availability and what you need to check in order to ensure it.

An Introduction to Availability Testing
As a general idea, availability is a measure of how often the application is available for use. More specifically, availability is a percentage calculation based on how often the application is actually available to handle service requests when compared to the total, planned, available runtime. The…

LinkedIn load testing example 🤟

LinkedIn engineers show how they do load testing increasing the portion of data which goes to a particular data center. During such a test customers are impacted due to data replication lag, and that was a major problem. However load testing should be done, so it was a good task for engineers to solve. Read how they did it.

Entity Routing Service (ERS) load test evolution
LinkedIn is operating today at a scale of nearly 1.6M graph queries per second (QPS), with 830M+ members. At this kind of scale (and seeing roughly 34% year-over-year growth), it can be hard to predict and manage capacity. Beyond being prepared for everyday operations, we also want to ensure LinkedI…

Cloud security comparison of the big 3 👷‍♂️

A Cloud Guru is resource to learn the cloud providers, their offerings and architecture practives. A new article in their blog tries to compare the security offerings from the big 3 cloud providers: AWS, GCP and MS Azure. Roles, shared responsibility models and many more inside.

Cloud security comparison: AWS vs. Azure vs. GCP
Learn about the shared responsibility models across AWS, Azure, and GCP, as well as IAM, PaaS data security options, and built-in security and compliance.

Ballerina: a Data-Oriented Programming Language 👷‍♂️

Ballerina is an unusual programming language. It is designed for manipulating data and writing network services. Data is a first-class citizen in this language. Also, it includes tools for graphical representation of source code in form of a sequence diagram. This article describes how this language brings best from statically and dynamically typed languages for working with data.

Ballerina: a Data-Oriented Programming Language
Ballerina’s flexible type system brings the best of statically typed and dynamically typed languages in terms of safety, clarity, and speed of development. Ballerina treats data as a first-class citizen that can be created without extra ceremony, just like strings and numbers.

Software Deployment, Speed, and Safety 🍼

Marc Brooker shares his vision of the deployment process. He discusses the following questions. How fast to move? How to measure speed? The Friday question. The tradeoff between speed and safety.
There are interesting thoughts about risk management, correlated failures, and customers. There are no ready-made solutions in the article. But you can use it to define requirements for your deployment process.

Software Deployment, Speed, and Safety - Marc’s Blog

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