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

Before we start, this week I hold an interview about ChatGPT with Alexander Granin - a Haskeller, A Software Architect and of course an author of "Functional Design and Architecture" book. Enjoy our discussion on whether or not ChatGPT will make the developer's profession obsolete.

Video

Highlights

Google Sheets as backend πŸ‘·β€β™‚οΈ

When you start a new project you probably think, hey, I would pick MongoDB, or I want a PostgreSQL installation. But some successful projects start with none other than Google Sheets as their storage. It appears it is scalable, simple, and it's easy to integrate with. Β Find a great post by Levels.fyi - a site with literally salary bands of IT industry - where they show the evolution of their system design, which started with Google Forms and Google Sheets.

How Levels.fyi scaled to millions of users with Google Sheets as a backend
Our philosophy to scaling is simple, avoid premature optimization

#casestudy

Reality Check Pattern 🍼

Have you ever encountered your navigation software telling you you're in a river while you were driving a highway? Well, Uwe Friedrechson just did, and a resiliency architect, he immediately came up with the pattern which he called "A reality check". It means that your system should check the signals from the outside world, and, if they stop making sense, change the state to something like safe mode, where it could not mislead the user or harm them. Grab more examples and conclusions inside :)

Reality check
When systems live in their own world

#architecture #pattern #resilience

Distributed Machine Learning at Instacart πŸ‘·β€β™‚οΈ

Several issues ago I mentioned the KubeRay - a platform for running ML workloads on Kubernetes. And this week Instacart published a piece on building the distributed ML platform using exactly that. Find out, how they managed to build a scalable, efficient, diverse platform which allows for development and maintenance simplicity, as well as seamless integration with the previous platform called Griffin.

Distributed Machine Learning at Instacart
How Instacart uses distributed Machine Learning to efficiently train thousands of models in production

#ml #casestudy #k8s #kubernetes #kuberay

Follow Up

AWS Aurora receives Write Through Cache πŸ‘·β€β™‚οΈ

Replication lag appears when the replication stream is generated too fast for a replica to keep up. To improve this situation, Write-Through Cache was introduced which decreases the replication lag by 44%. More details in the article.

#database #cloud #aws

Architects, Anti-Patterns and Organizational Fuckery  🍼

What is the difference between Principal Engineer and Software Architect? Should Architect be a Role or a Title? How to avoid screwing up your organization by introducing the Architects rotting up in their Ivory Tower? The person named mipsytipsi wrote a long read after a discussion in Twitter where the attitude toward the title was collected. Funny, that the post confuses the title and the role... but it's still an entertaining read nonetheless. Β 

Architects, Anti-Patterns, and Organizational Fuckery
I recently wrote a twitter thread on the proper role of architects, or as I put it, tongue-in-cheek-ily, whether or not architect is a β€œbullshit role”. It got a LOT of reactions (2.5 we…

#architect #philosofy

Cloud Native Landscape πŸ‘·β€β™‚οΈ

The amount of tools for developing, deploying, running and monitoring cloud-native apps is over 1000. So you face a problem: what tools you would like to solve the expected issues? Worry no more: Cloud-Native Foundation has a tool called landscape, where you can find all the tools conveniently laid out by the area of applicability. Β 

Cloud Native Landscape
The Cloud Native Landscape organizes all cloud native open source projects and proprietary products into categories, providing an overview of the current ecosystem

#cloud #cloudnative

Workflow Orchestration πŸ‘·β€β™‚οΈ

The common approach to a distributed transaction is a saga either orchestrated or via choreography. However, sagas compensation can not be always possible or at least expensive, like refunding the money sent for payment due to commissions. One of the ideas to solve the problem is the workflow approach, which camunda or temporal.io is implementing. This way you have a separate component which responsibility is only to manage the workflows and ensure they finish or complete gracefully. Follow the article for details.

Architecture Pattern : Orchestration via Workflow
Workflow pattern is a powerful way to combine low level capabilities for modelling business processes

#patterns #distributedsystems

Contract-Driven Development πŸ‘·β€β™‚οΈ

The "Contract-Driven Adoption" article on InfoQ explores how contract-driven development can improve the adoption of new technologies and tools in organizations. It discusses the benefits of using contracts to define expected behaviours and outcomes, reduce ambiguity, and enable faster feedback and iteration. The article covers different types of contracts, provides examples of real-world projects, and offers practical tips for using contract-driven development. Overall, it provides a useful perspective on how contract-driven development can facilitate technology adoption and improve collaboration among teams.

Contract-Driven Development – a Real-World Adoption Journey
Contract-driven development adoption is not just about tooling or practices, it involves changing how people work with each other and in order to influence such changes, the roadmap for adoption should account for the learning curve and demonstrate value incrementally at each stage to individual tea…

#microservices #contract #api

Microservice Dependency Graphs 🀟

The "Characterizing Microservice Dependency Graphs" article on MuratBuffalo's blog discusses a study on analyzing over 100 microservice systems using network science techniques to identify common patterns and properties. The article highlights key findings, such as the prevalence of power-law distributions, clustering, and hierarchical structures in microservice dependency graphs. The authors discuss the implications of these findings on the design and management of microservice architectures, such as the need for monitoring, fault tolerance, and modularization. Overall, the article offers insights for improving the scalability, reliability, and maintainability of microservice architectures.

Characterizing Microservice Dependency and Performance: Alibaba Trace Analysis
This paper got the best paper award at SOCC 2021 . The paper conducts a comprehensive study of large scale microservices deployed in Alibaba...

#microservice #paper #tracing

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, Roman and Egor for already supporting the newsletter. Join them as well!