Architecture Weekly #18
Architecture Weekly Issue #18. Articles, books, and playlists on architecture and related topics. Every record has the complexity indication: 🤟 means hardcore, 👷♂️ is technically applicable right away, 🍼 - introduction to the topic or an overview. Now in telegram as well.
WARNING 🇺🇦
It's already almost three months of crazy, inhuman, unjustified war of Russia 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.
KubeCon Edge Day Recordings 👷♂️
KubeCon wrapped up this week. The recordings from the Edge day are already available! Edge Computing is all about bringing computation and data as close to the end-user as possible. As hardware and software spread across hundreds or thousands of locations, it requires a proper observable and scalable solution. Kubernetes is already becoming a key part of the edge ecosystem, driving integrations and operations. Learn more in the playlist from the conference!
Federated graph made searchable at Netflix 👷♂️
Netflix uses GraphQL to supply data to their frontends. This data includes content, content producers, and talents - actors, operators, directors, etc. The problem is that this graph should be searchable once you want to let's say find every movie where Hugh Jackman is involved. Netflix employed elasticsearch, but it required some design decisions. Find out how!
Network Semantics for Verifying Distributed Systems 🤟
Formal verification is a relatively old idea in software development. The article by James Wilcox explains how its methods can be used to prove the distributed systems adheres to its guarantees.
Awesome distributed transactions 🤟
If you are interested in different aspects of distributed transactions, look at this Awesome list. There are about 40 papers and videos related to this theme. There are a few categories: weaker than snapshot isolation levels, Snapshot isolation, serializability, hardware, limitations, and testing. You will find papers about two-phase commits, Paxos, ordering, etc.
The moduliths 👷♂️
Monoliths were a popular architecture style back in the day being on one side of a spectrum. The microservices came with the language independency, separated deployments, and modularity on the other side. However, they brought all the problems of distributed systems. In the middle of granularity spectrum reside moduliths - monoliths with proper modularization. How do we distinguish them in the article by Uwe Friedrichsen.
DevSecOps for Mobile CI/CD pipelines 👷♂️
In the mobile-first world, security is extremely important for mobile applications which range nowadays from games to full-scale banking apps. There are numerous mobile-specific security concerns like application integrity, SSL Pinning, etc. They should be addressed at the latest build stage. Read, how to establish the controls in your CI/CD pipeline.
How to do Non Functional Testing 👷♂️
We already included the article about NFR Testing. We decided to continue with a guide by Sanjay Kumar, in which he describes the strategy of testing the NFRs: shift quality left, focus on requirements, and test on a production-like setup. More details inside.
Presto® on Apache Kafka® At Uber Scale 👷♂️
Uber team describes how they integrate Kafka and Presto for ad-hoc exploration. They optimized operational queries like "is certain messages exist in the input/output Kafka streams?". Solution with Presto helped to reduce the query time from tens of minutes to seconds.
Towards Successful Resilient Software Design 🍼
Resilient Software Design became mandatory in today’s distributed system landscapes. Uwe describes seven challenges of resilient design. The biggest project issues are not on the coding level. He focuses on the following topics: understanding distributed systems and how to create a good functional design. Chaos Engineering is mentioned too.
Diagramming Software Architecture with C4 and PlantUML 👷♂️
We love PlantUML - it is a good way of composing diagrams, storing them in git, and watching the evolving history of your system. This article describes, how you can use it in connection with C4 modeling approach and provides useful examples.
Brought to you by Vladimir @vvsevolodovich Ivanov and Ilya @puzan Zonov