Architecture Weekly #134 - 3rd July 2023
Welcome to the new week!
Last week we did a next Architecture Weekly community webinar.
Maciej "MJ" Jędrzejewski told us about Evolutionary Architecture: The What. The Why. The How. Showing us how to design good enough solutions that can evolve from simple solutions to complex ones.
Maciej provided:
specific guidance on how to start a new project,
suggestions on how not to end up overengineering,
the step-by-step ladder on where to introduce complex topics.
hands-on practical examples from his repository: https://github.com/meaboutsoftware/evolutionary-architecture.
Watch it here:
One of the reasons why we’re overengineering our solutions is that we’re struggling to follow the money. I noticed that we developers struggle to understand the difference between client and user. The client is someone that pays for our system, and the user is the one that uses it. We may have a huge number of users and a small number of clients. Because of that, we may make wrong technical and product assumptions.
Read more about that in my latest article:
Prioritisation is also a topic of the Mark Schwartz article written on the AWS Blog:
It touches on three aspects: workflow management, strategy and product value. It’s thorough food for thought without giving easy answers. The conclusion is that we need to join all of them to make the right decisions.
“That’s implementation detail!”. I’m sure you shouted this sentence a few times to junior dev. I did. Ok, I wasn’t shouting but definitely used it. On the one hand, we use it to prioritise the effort or discussion direction; on the other, that’s also a show stopper and a way to wave out thoughts we’re not interested in. Read more in the latest Mark Seemann article:
The priority of the platform team is to enable efficient work for the other teams and reduce cognitive load related to knowing details they might not need. Still, I see the trend that the past Core Teams and Operations Teams were rebranded into DevOps Teams, and now they’re named Platform Teams. I like the idea of Platform teams being there for other teams, but most of the time, I don’t see that happening. Newer names, the same old issues and the struggle to find the right power balance. Too often, they become gatekeepers and are put on a pedestal. Finding the right balance is super tricky.
See more in the videos below:
Ken Scambler - Replatform in a Year or Die: The Tale of a Turnaround
Dave Farley - Don’t Get Caught In The Platform Engineering Hype
Continuing the focus on removability from the last releases. Check two more resources. Pre-mortem game that we can play to reduce the need of post-mortems and how AWS is dealing with their backward process:
Data processing engines are innovating really fast. MongoDB added stream processing to their products portfolio, and Databricks added English as a programming language to Spark's offering. Yes, English. Not surprisingly, that’s also related to the text-processing everyone applies now to their tools. Read more in:
Is cutting 300ms from the Frontend request time a lot? For a scale like Wikipedia - definitely! Read more about the interesting case study:
And some tragicomedy to laugh or cry, depending on your perspective:
Check also other links!
Cheers
Oskar
p.s. I invite you to join the paid version of Architecture Weekly. It already contains the exclusive Discord channel for subscribers (and my GitHub sponsors), monthly webinars, etc. It is a vibrant space for knowledge sharing. Don’t wait to be a part of it!
p.s.2. Ukraine is still under brutal Russian invasion. A lot of Ukrainian people are hurt, without shelter and need help. You can help in various ways, for instance, directly helping refugees, spreading awareness, and putting pressure on your local government or companies. You can also support Ukraine by donating, e.g. to the Ukraine humanitarian organisation, Ambulances for Ukraine or Red Cross.
Architecture
Mark Seemann - When is an implementation detail an implementation detail?
Mikael Vesavuori - Designing a Next-Level EventCatalog Setup for Event-Driven Architectures
Dave Anderson - The Amazon Working Backward Process for Engineering
DevOps
Ken Scambler - Replatform in a Year or Die: The Tale of a Turnaround
Dave Farley - Don’t Get Caught In The Platform Engineering Hype
Databases
Frontend
AI
Java
David Vlijmincx - Introduction and pitfalls of Java's new concurrency model
Bruno Borges - Secrets of Performance Tuning Java on Kubernetes
.NET
Daniel Marbach - Performance tricks I learned from contributing to open source .NET packages
Steven Sanderson - Experiments with the new WASI workload in .NET 8 Preview 4