Architecture Weekly #115
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.
Highlights
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.
#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!
#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.
#serverless
Follow-Up
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!
#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
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!
#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.
#k8s
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.
#performance #basics
Next week I will be on the vacation, so no newsletter issue next week. Grab a short break :)
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!