Architecture Weekly Issue #60. 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 as well.

WARNING 🇺🇦

It's already been a year since Russia's crazy, brutal and unjustified war 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. If you want to help directly, visit this fund.

Video

Highlights

Cloud-Bound Applications 🍼

If you consider the whole environment of the application running in a modern cloud, be it a container, a VM or a lambda function, you will discover two sets of bindings: compute bindings and integration bindings. While the first set is transparent to developers and basically means a form of delivery(docker container or just a binary), the second one includes all sorts of APIs and protocols to leverage the platform resources and external services.  If you add their stateful and asynchronous binding you will get a landscape of a Cloud-Bound application. To know more, follow a long-read which is not poor with the illustrations though.

What Are Cloud-Bound Applications?
The increasing adoption of application-first cloud services is causing applications to blend with the cloud services at levels much deeper than before. The runtime boundaries between the application and the cloud are shifting from virtual machines to containers and functions.

#cloud #architecture #vision

Container Security Fundamentals part 2 🤟

Containers are used everywhere, and there are tons of best practices around container security. But suppose you need to understand why those practices are in place, or you just want to understand container security better. In that case, I recommend reading a series of articles on container security fundamentals by Datadog. They explain how the containers are mostly Linux processes and continue to show that Linux applies the namespaces across multiple parameters to secure those. Follow the details inside.

Container security fundamentals part 2: Isolation & namespaces | Datadog Security Labs
A look at how Docker containers use namespaces for isolation

#security #linux

Master the Art of Caching for System Design Interviews 👷‍♂️

Caching is an essential technique in system design, which can help improve the performance of applications, reduce latency, and save resources. However, caching can be a double-edged sword, as it can also introduce some challenges, such as consistency and invalidation. This article provides a comprehensive guide on caching, covering everything from the basics to the advanced topics. It starts with an introduction to caching, including its definition, benefits, and types, such as in-memory, disk-based, and distributed caching. It then dives into the different caching strategies and algorithms, such as Least Recently Used (LRU), Least Frequently Used (LFU), and Random Replacement.

Master the Art of Caching for System Design Interviews: A Complete Guide
A Comprehensive Caching Guide for Acing System Design Interviews.

#systemdesign #caching #performance

Follow-Up

Database Versioning Best Practices 👷‍♂️

You can think that all the industry switched to versioning of the database schemes long ago and everybody is using something like Flyway or Liquibase for that. The reality is that it is far from true. That's why I decided to highlight a several-years old, but still very actual post by Vladimir Khorikov on Database Versioning. Grab 6 best practices on storing version inside the db itself, having the immutable SQL files, keeping them in the source control and some others.

Database versioning best practices
The topic described in this article is a part of my Database Delivery Best Practices Pluralsight course. Keeping track of your application’s database is not an easy task. Database schemas tend to mismatch in different environments, data in one of the databases may miss some crucial piece of data. S…

#database #db #bestpractice

Large Scale Ad Data Systems at Booking.com using GCP 🍼

How much money Booking.com spends on advertising yearly you think? It's almost 5 billions! With such a budget, you definitely want to spend it wisely. In this article in their Engineering Blog, Warren Qi shares how Booking.com is using BigQuery to analyze the efficiency of their ad-campaigns, and how the Spanner is leveraged to combine different data into useful views.

Large Scale Ad Data Systems at Booking.com using the Public Cloud
How do we run PPC at our scale, and efficiently? In this article, we want to illustrate…

#cloud #gcp #booking

How to do distributed locking 🤟

Locking is a typical approach for consistency: for example, you lock a row in a database so that only one process can modify it. However, in a distributed system it becomes much harder due to network delays. I want to share another old article on how to handle distributed locks by Martin Kleppmann - with an example of Redis. Grab a read.

How to do distributed locking — Martin Kleppmann’s blog

#distributedsystem #locking

Zachman Framework explained in 12 minutes 🍼

Imagine you're looking into positions of Enterprise Architect, Chief Architect or a CTO. In any case you would have to understand a lot about the company. Zachman matrix is one of the enterprise frameworks that will help you to ask the most important questions on all the levels that matter. Follow the video by Mark Richards - a co-author of "Fundamentals of Software Architecture" and its sequel.  

#ea #enterprisearchitecture

Transactional Data Lake with Incremental ETL at Uber  👷‍♂️

Batch processing is a powerful tool able to process tons of data. However, if the major part of this data does not change much, you can lose on the efficiency and the latency. Uber's blog features an article by Sara Wilmes-Reitz on the idea of incremental ETL processes, allowing them to update the information much quicker and with lower latency. Follow the article for details.

Setting Uber’s Transactional Data Lake in Motion with Incremental ETL Using Apache Hudi
The Global Data Warehouse team at Uber democratizes data for all of Uber with a unified, petabyte-scale, centrally modeled data lake. The data lake consists of foundational fact, dimension, and aggregate tables developed using dimensional data modeling techniques that can be accessed by engineers an…

#bigdata #etl #datawarehouse

Domain-Driven Design with Vlad Khononov 🍼

And this week I recorded an interview with Vlad Khononov - an author of "Learning Domain-Driven Design" and other O'Reilly-published books. Watch a video to find out how the DDD can help you be a better architect.

#video #ddd #interview

Like the newsletter? Wanna receive new content earlier, than everybody else? Consider helping to run it at Patreon or Boosty. The funds go to pay for the hosting and some software like a Camo Studio license. Patrons and Boosty subscribers of a certain level also get access to a private Architecture Community and of course every supporter gets early access. Big thanks to Nikita, Anatoly, Oleksandr, Dima, Pavel B, Pavel, Robert, Roman, Iyri, Andrey, Lidia, Vladimir, August and Roman for already supporting the newsletter. Join them as well!