Architecture Weekly #55
Architecture Weekly Issue #55. 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 354 days 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
Last week I conducted not 1, but 2 interviews. The first one is with Uwe Friedrechsen, where I ask him about where software architecture is going in 2023. The second one is where Andrey Rebrov, a CTO from ScentBird, tells us about the microservices, where we go with them, how to pick the right size for a microservice and how they transitioned from a Grails monolith to Java microservices. Both videos are available for Patrons and Boosty subscribers.
Highlights
Breaking up a Monolith by Khan Academy 👷♂️
The question "How to do you transition from a monolith to microservices?" is very real. And fortunate you are, Khan Academy just completed a project of migrating from a Python 2 monolith to a set of Go microservices across the timespan of 3,5 years. Such projects are challenging from so many perspectives: how do you start? Do you apply Agile practices or handle the project as a waterfall one? How do you make the transition: per feature, per domain, per function? How to retain people over this timespan? Khan Academy shared what went well, and what choices they would reconsider. A very insightful article by Gergely Orosz.
How to fix a $1 Million Query 👷♂️
Shopify decided to use BigQuery as its Data Warehouse solution. They had to process the data of their customers. But once they estimated the cost of a single query type running for their volumes for a month, they got a walloping value of approx 1 million dollars. That definitely rang a bell, so the engineers went to find a way to optimize that. It appears that a where clause and a cluster feature of BigQuery led them to the solution. Check out which one.
#bigquery #cloud #gcp
Is software getting worse? 🍼
And the last highlight for today is a post in StackOverflow blog on the software getting worse meaning it's heavy, slow and buggy. Ryan Donovan argues that's wrong to blame the programmers: they really want to make fast, compact software; but the market just does not care! The very interesting business reasoning inside.
Follow-Up
Investing Wisely in Architecture Through Refactoring 🍼
Simon Brown said that the industry was transitioning from big upfront design to no design at all. The same might happen at an application level: investing in the design too much makes it a bit overengineered; once you learn you will start doing less designing until you find the right balance. J. B. Rainsberger reason this tendency and finds that it is an essential part of learning. You can't predict if you're overdesigning or under-designing, but that's not an issue if you can get out of it via refactoring. And exactly at this point, you might need the architecture patterns.
#architecture #refactoring
Kubernetes Patterns e-book 👷♂️
Speaking about the patterns, RedHat just shared an online book published with O'Reilly on the patterns. So you will find foundation patterns like declarative deployment and managed lifecycle, behavioural patterns like batch and periodic jobs, and structural patterns like sidecard and adapter and many more inside.
#patterns #k8s #kubernetes
Designing modern frontend app architecture 👷♂️
So you decide you want a new big frontend application - maybe you're building something from scratch, or you're rewriting an old big ball of mud into something more appropriate. How would you approach the front-end architecture? What quality attributes do you need to take into account? Find a well-structured and illustrated article on what you should be aware of to build a good solution.
#architecture #frontend
Modern Cloud for Multiplier Games 👷♂️
I am a personal fan of StarCraft 2 - an online RTS game. But as a software architect I always wondered how you design such a system given the requirement of synchronization of the game data between multiple players simultaneously supporting low latency requirements. This week I stumbled upon an article which digs into the technical challenges of multiplayer games and explains how they can be solved within a cloud environment.
#architecture #gaming #multiplayer
Raft visualized 🤟
Raft is a distributed consensus algorithm. They are typically hard to comprehend, and that's the reason good visualization can be highly valuable. Grab one for Raft and go step by step through the concepts of consensus, leader, follower, leader elections and other related stuff.
#distributedsystem #consensus #raft
Using AI for system design and diagram creation 👷♂️
Talks about ChatGPT are all over the internet right now. Some people use them for writing cover letters, some create manuals, and some even suggest building YouTube video scenarios with it. Software architects though are experimenting with building system design with it. Find a receipt for formulating the data model and sequence diagrams for a wealth management system using ChatGPT below.
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!