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

5 nines of uptime with zero-downtime data migrations at Stripe 👷‍♂️

Stripe showcases their ability of support 5 nines of availability with highest reliability in place and zero downtime migrations. Amazing material, explaining why they had to build a cluster management solution on top of MongoDB, how their data migrations work and the performance issues they discoverd in data movement

How Stripe’s document databases supported 99.999% uptime with zero-downtime data migrations
In this blog post we’ll share an overview of Stripe’s database infrastructure and discuss the design and application of the Data Movement Platform.

#performance #reliability #casestudy

Fallacies of Distributed Systems 🍼

Do you really think the networks are secure? Are you sure you can ignore the latency? Network bandwidth is indeed infinite, isn't it? In this video we will figure out 8 fallacies of distributed systems and find out how to mitigate them efficiently. Watch the 10-minute video and write in the comment section what is your favorite fallacy :)

#video #distributedsystems

The Open AWS Catalogue 👷‍♂️

AWS has tons of documentation, but here's the trick: there can be too much of it. Recently stumbled upon a 3rd party collection of AWS services description, like AWS Elastic Cache or AWS Key Management Service. It explains it briefly, but yielding a good summary

Home - undefined
Personal knowledge space

#documentation #aws

Business Oriented System Design Course

If you wanna rock system design interviews, be able to design performant, reliable and secure software architecture, and advance in software engineering career, I have a course to help with this!

Opening up the second cohort of  Business Oriented System Design Course. What's included, what the participants of the first cohort think about it and other details - on this page. Several participants already applied!

Follow-Up

Not Just Scale 👷‍♂️

In system design interviews I hear occasionally "we can go with 1 machine still; yeah, 4 TB is not a problem with RAID". Formally, you can of course fit so much data on a disk massive, however it does not feel right. Marc Brooker formulated why exactly this is a problematic statement mentioning availability, reliability, scalability and security concerns.

Not Just Scale - Marc’s Blog

#scalability

Big list of naughty strings 👷‍♂️

Did you know that some years back you could trigger an internal server error at Twitter just by sending by some unicode characters? Did you know that IIS server used to crash just when you send a GET requets with the query exceeding 65k? There are actually many more strings that cause troubles to webservers. Here's an example repo. Check if your webapp can handle those naughty strings!

GitHub - minimaxir/big-list-of-naughty-strings: The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data.
The Big List of Naughty Strings is a list of strings which have a high probability of causing issues when used as user-input data. - minimaxir/big-list-of-naughty-strings

#security

The essential guide to Database Security Best Practices 🍼

If you think about the threats for the database, you can go insane: data loss, data corruption, malware, denial of service, hacker attacks... Find a list of 10 essential steps that you should be taking anyway, as databases are core of your it business, right?  

Database Security Best Practices: The Essential Guide
Database security is an ongoing challenge. See our step-by-step guide to best practices to make it hard for attackers to access your whole network at once.

#security

The best UUID type for a database Primary Key 👷‍♂️

Typical integer identifiers have significant cons like requiring a DB to generate it, the ability to enumerate through identifiers and so on. UUID solves those problems, but at the expense of performance hit both from storage and index perspective. Vlad Mihalcea describes a time-sorted unique identifiers which are large, non-monotonic but makes much better sharding and indexing keys. Follow the article for the details

The best UUID type for a database Primary Key - Vlad Mihalcea
Learn what UUID type works best for a database Primary Key column and why a time-sorted TSID is more effective than the standard UUID.

#db #performance

Cloud without Kubernetes 🍼

Kubernetes is now the default running option almost everywhere you would look at. Small business, medium ones, huge corporations. I personally argue that K8s do solves a lot of problems, but it does it a cost of separate team with appropriate specialization, so it shouldn't be a default option. Tyler Treat declares pretty much the same: we need a better higher-level abstraction, or a serverless solution. I really like this article, follow his considerations

Cloud without Kubernetes
I think it’s safe to say Kubernetes has “won” the cloud mindshare game. If you look at the CNCF Cloud Native landscape (and manage to not…

#k8s #serverless

Improving CI/CD with a Focus on Developer Velocity 👷‍♂️

CI/CD pipelines seem easy when you have up to 10 developers. But with engineers count grow, you get new problems like flaky tests, long build time and merge conflicts on concurrent PRs. This post in Samsara's blog makes great job(engineering for engineering!) explaining the tradeoffs of various measures and it's impact on the developer velocity.

Improving CI/CD with a Focus on Developer Velocity
A Samsara engineer discusses CI scaling issues that we suspect other monorepo-running tech companies may encounter.

#cicd #devops

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, 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. They receive early access to the articles, influence the content and participate in the closed group where we discuss the architecture problems. Join them at Patreon or Boosty!