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

Business Oriented System Design Course Cohort #5 is closed, but you can apply for Cohort #6(starting 23rd of July) waiting list here.

Highlights

Coding Assistants Threaten the Software Supply Chain 🍼

Threat modelling include Supply Chain attacks for a long time already. With coding assistants and MCP servers coming into picture, new attack surfaces emerge. Jim Gumbley shares the ideas how to fight those innovative attacks on Martin Fowler's blog.

Coding Assistants Threaten the Software Supply Chain
Notes from my Thoughtworks colleagues on AI-assisted software delivery

#security #ai

When to use Request-Response with Apache Kafka? 👷‍♂️

Well, Apache Kafka does not provide exactly the request-response symantic: you just throw an event there and it eventually gets consumed. Kai Waehner shows the different intergration patterns and explain the best practices.

When to use Request-Response with Apache Kafka? - Kai Waehner
Blog about architectures, best practices and use cases for data streaming, analytics, hybrid cloud infrastructure, internet of things, crypto, and more

#kafka #microservices #integration

You might not need Redis 🍼

Using In-Memory Cache on the server side is popular practice to increase performance and improve available. But is it required every time? Victor Blomqvist shares 3 stories where Redis was concidered but eventually was decided out and to a good results.

You might not need Redis
Redis is arguably the most well regarded tech of all. But many times you do not need Redis. Here are 3 examples from my last 3 jobs.

#performance

Follow-Up

A detailed introduction to Buf 👷‍♂️

Kafka indeed supports the schema registry. And while having runtime type-checked schemas are fine, they don't cover all the cases like semantic validation or handling the sudden new schema on the cluster. The folks shows Bufstream: a replacement for Kafka with those problems solved through treating schemas as code and adding the required capabilities.

Buf - A detailed introduction
This blog introduces Bufstream as a potential solution to data quality issues in streaming data, specifically within Kafka. It uses a case study of “Kafkaflix” to demonstrate schema evolution challenges and how traditional schema registries fall short.

#kafka

A simple search engine from scratch* 🤟

Imagine you want to add a search engine to your blog(like this one). You'd probably go with mere text search within MySQL, but the results will be mediocre at best. How about build a more sophisticated ones searching for meanings, rather than text match? Max Bernstein shows how it can be achieved with a little machine learning and a couple of python scripts.

A simple search engine from scratch*
*if you include word2vec.

#search

JavaScript Lambda Runtime Benchmarking 👷‍♂️

Jason Butz’s article on DEV Community delves into a comparative analysis of JavaScript runtimes in AWS Lambda, specifically focusing on Node.js, Bun, and Deno. The study aims to evaluate the performance differences among these runtimes, particularly in the context of cold start times and execution durations.

JavaScript Lambda Runtime Benchmarking
Last month, I tried out using Bun as a custom JavaScript Lambda runtime and was surprised by the…

#performance #serverless

Fast Distributed Transactions for Partitioned Database System 🤟

The 2012 SIGMOD paper introduces Calvin, a transaction scheduling and replication layer designed to transform non-transactional storage systems into scalable, ACID-compliant databases. Calvin’s key innovation lies in its deterministic execution model, which predefines a global transaction order, eliminating the need for traditional distributed commit protocols like two-phase commit.

#db #distributedsystems

Postgres backend statistics: WAL Statistics 👷‍♂️

Bertrand Drouvot’s latest blog post sheds light on the upcoming PostgreSQL 18 feature: per-backend Write-Ahead Logging (WAL) statistics. This enhancement introduces the pg_stat_get_backend_wal() function, allowing developers to monitor WAL activity on a per-backend basis. Such granularity aids in pinpointing which backend processes are generating the most WAL traffic, facilitating more efficient debugging and performance tuning.

Postgres backend statistics (Part 2): WAL statistics
Introduction PostgreSQL 18 will normally (as there is always a risk of seeing something reverted until its GA release) include those commits: Add data for WAL in pg_stat_io and backend statistics: commit a051e71e28a12342a4fb39a3c149a197159f9c46 Author: Michael Paquier <[email protected]> Date: Tue Feb 4 16:50:00 2025 +0900 Add data for WAL in pg_stat_io…

#db #postgres

Big thanks to Nikita, Constantin, 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 on Patreon!