Architecture Weekly #118

Architecture Weekly Issue #118. 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 and Substack as well.

Highlights

Endpoint vulnerability management at scale 👷‍♂️

Scanning a single machine for vulnerabilities is easy. However, what do you do when you have thousands? As Canva is trying to maintain it's high security status, they created a serverless based solution to monitor their edge locations, grab the info of software installed and automatically make tickets for the vulnerable versions.  

Endpoint vulnerability management at scale - Canva Engineering Blog
How we do endpoint vulnerability management at Canva.

#security #casestudy

PostgreSQL dropped tail latency by half in the last 10 years 👷‍♂️

What is a tail latency? It is the longer response time experienced by a small percentage of the requests. Ryan Marcus decided to figure out how this characteristics improved in PostgreSQL and discovered it was almost cut in half in the last 10 years. Find the methodic of the research in the article.

#db #performance  

Defining Safety and Liveness 🤟

In distributed systems it is crucial to have correct mental models. How do you think about Safety and Liveness properties? Thankfully, Bowen ALPERN and Fred B. SCHNEIDER formulated it in the formal language, and you can read the paper! Hint: ChatGPT helps a ton with understanding formulas :)

#paper #distributedsystems

Follow-Up

Measuing Developer Productivity via Humans 🍼

This week there was again a question in one of the chats on how to measure developer productivity. As I have a video on the topic, I want to also share an article from Martin Fowler's blog where there is good discussion on quantative vs qualitive metrics.

Measuring Developer Productivity via Humans
Organizations should prioritize measuring developer productivity using data from humans, rather than data from systems.

#devex

Async circuit-breaker for AWS Lambda 👷‍♂️

Circuit breaker is a widely known pattern. And it is still not sufficient in some cases. For example, when you're connecting to external API with some weird limitations like large maintenance windows, unavailability during pick hours etc. If you're using Lambda, you can build a more sophisticated solution with Amazon Kinesis, DynamoDB and bunch of lambdas. See how!

Async circuit-breaker for AWS Lambda
Here is a practical solution to dynamically adjust concurrent requests to a downstream service based on response time and error rate.

#serverless #patterns #casestudy

Advanced Test Practices for Helm Charts 👷‍♂️

Originally, I stumbled upon an article on golden testing helm charts and wanted to understand why you would need it in the first place, but googling led me to this one with not only golden testing, but several others advanced test practices for Helm.

Advanced Test Practices For Helm Charts
I’m excited to share the detailed learnings and experiences I had along my journey of finding a good way to write automated tests for

#go

How LinkedIn reduced latency and cost-to-serve by merging two systems 👷‍♂️

I don't want to start the annotation with 'who would have thought', but who would have thought a single service would have less latency and be more cost-efficient than 2 services? LinkedIn learnt that the hard way. Find an interesting case-study on merging two microservices into one!

How we reduced latency and cost-to-serve by merging two systems

#casestudy

It's always TCP_NODELAY 🍼

Do you know all the flags of a TCP connection? Me neither. Apparently, some of them are crucial for latency in distributed systems. Great example is TCP_NODELAY, which disables delaying the ACK sending until a timer or... more details in the article!

It’s always TCP_NODELAY. Every damn time. - Marc’s Blog

#distributedsystems

WARNING 🇺🇦

The brutal and unjustified war against Ukraine continues already 2 years. If you want to help Ukraine 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, Dzmitry, Mikhail, Nikita, Dmytro, Denis and Mikhail 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!