Architecture Weekly Issue #115. 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.


Formal Methods: Just Good Engineering Practice? 🍼

This week TLA+ conference 2024 happened, and the keynote speaker - Marc Brooker - wrote a post about Formal Verification Methods, which are essential in large distributed systems. He is reasoning that formal methods are not only necessary, but actually make a good engineering practice. And I hope we all want to be good engineers.

Formal Methods: Just Good Engineering Practice? - Marc’s Blog

#philosophy #distributedsystems

Postgres Aurora DB major version upgrade with minimal downtime πŸ‘·β€β™‚οΈ

Lyft's payment database size is 30 TB. Upgrading such a db in-place would take approx 30 minutes which can be pretty expensive. So Lyft's team decided to use Logical Replication to create a replica, so then they could later cut off the writes into the main DB, ensure that replication lag reduced to 0 and then redirect the writes to a new instance. More details inside!

Postgres Aurora DB major version upgrade with minimal downtime
By Jay Patel

#db #casestudy

The serverless illusion 🍼

While serverless technologies are amazing, allowing you to get increadibly fast, they also require specific understanding: freeing you up from operational knowledge, they demand grasping distributed systems. And that's not an easy tradeoff. Find a long-read in The Architect Elevator.

The Serverless Illusion
Abstractions can become illusions. Is Serverless one of them?



XML Generation with Typescript. Java-style πŸ‘·β€β™‚οΈ

And an article from myself! If you came a path from Java to Typescript for backend development, then you're probably missing the way Java serializes objects into XML. I got the same feeling, and decided to bring similar DX to Typescript. Find out what I managed to achieve!

XML Generation with Typescript. Java-style.
Generating XML from TS can be cumbersome, but not necessarily. Find out how to do that Java style.

#development #ts

Observability with AWS X-Ray πŸ‘·β€β™‚οΈ

If you have a single lambda, you can be fine with just looking at cloudwatch logs. However, if you have 2 or three, figuring out issues in production become tricky. One way to battle it is integration tests with TestContainers. The other - using observability solutions, like AWS X-ray. Find an explanation what's that, how it's helpful and how to set it up for Node.js lambda writing to DynamoDB.

Observability with AWS X-Ray
What is AWS X-Ray, how it helps with monitoring and tracing in distributed applications, and step-by-step instructions to set it up for AWS Lambda.


Building a Service Mesh in a Hybrid Environment πŸ‘·β€β™‚οΈ

Interesting case from Quora. Historically, they had both Kubernetes workloads alongside with EC2 instances, which were not planned for migration. The setup of intercalls had it's limitations in scalability and operational usability, so they decided to migrate the solution to service mesh. Figure out what happened next!

Building a Service Mesh in a Hybrid Environment
Lida Li, Karim Seada and Orhan Uysal from machine learning platform (MLP) team. As a platform to share and grow the world’s knowledge, Quora runs its infra on both Kubernetes clusters and EC2 VMs. Since 2021, we have built a service mesh based on Istio that spans the two worlds, which improves t...

#casestudy #k8s

Why Kubernetes needs an LTS 🍼

Release cycles are important in Operating Systems, programming languages and indeed container orchestrator. This is a lightweight post explaning why Kubernetes may use LTS releases as upgrading a cluster can be comparably difficult as configuring a new one.

Why Kubernetes needs an LTS
There is no denying that containers have taken over the mindset of most modern teams. With containers, comes the need to have orchestration to run those containers and currently there is no real alternative to Kubernetes. Love it or hate it, it has become the standard platform we have largely


Use percentiles to analyze application performance 🍼

Some non-functional requirements can be tested and told if they are satisfied. Like, if software can be run on different OS for portability. With performance a single measure won't tell you anything - that's why we need to talk about averages, medians and percentiles. Find an explanation of those terms.

Use percentiles to analyze application performance
Learn how percentiles are better than averages in understanding the real performance characteristics of your application.

#performance #basics

Next week I will be on the vacation, so no newsletter issue next week. Grab a short break :)


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!