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