Enshitification and sensationalization.
Chapter XIII. Where our protagonist muses about the human nature, what eats what, microservices and hype.
Today’s best Band Ever™ is Robocobra Quartet. I think this song in particular fits the today’s topic. So blessed.
Difficulty: Hey, not too rough.
First, the world.
A king was coronated. Moscovites are cancelling military might parades or attending them via zoom. I wrote this before the parade, aspiring Adolf did show up and brought one (sic!) tank made in the 1930s (sic! sic!). The next level would be to virtualize not only the dictator, but the parade itself. Imagine, red square with a screen for the current i-killed-my-way-here, overlooking screens with 3D renders of supposedly real military equipment.
Did you know that in Soviet Union and now as inheritance in Moscovia they don’t celebrate the victory in the World War 2? It’s the victory in the “Great patriotic war“. The difference is “world vs nazis” and “soviets vs nazis”. The main reason for the difference is that it was Soviet Union, together with the Nazis, that started the World War 2 by signing Molotov-Ribbentrop pact and jointly invading Poland in 1939.
On the contrast, the Great Patriotic War started in 1941 when nazis attacked innocent soviets.
So the moscovites missing 9th of May, can still celebrate 23rd of August when they signed the pact with nazis, or 17th of September when Soviets joined their invasion of Poland.
Oh, and Bakhmut is still really bad and still stands.
Back to the fluffy world of software.
There’s a writer strike in Hollywood. It’s about compensation problems caused by streaming services (software) but also fear of losing job to robots (software).
Software eats the world.
I don’t think this is entirely correct.
If anything, I think Neil Gaiman was the closest in his description of the relationship between Mr. World and Techno Boy.
Software is becoming integral in the world. You are what you eat, and the world is eating software and becoming it without dramatically changing itself.
Because of that, the software is more and more living by world’s rules.
Enshittification
Here, Cory Doctorow is introducing the concept of enshittification.
Here is how platforms die: first, they are good to their users; then they abuse their users to make things better for their business customers; finally, they abuse those business customers to claw back all the value for themselves. Then, they die.
I think it’s exactly the example how software is being influenced by the world and how it lives by the world’s rules.
Sensationalization
This is another facet of the world’s influence. We’re living in the world where you would not believe these 5 things the world has done to the media.
Yellow press pioneered, and now the mass media adopted the approach where news have to be breaking.
I think, software world, starting with the Big Bubble of the 2000, has increasingly adopted this sensationalist approach.
We’re constantly in the search of the next big thing. The framework, the methodology, the technology. We even officially call it the hype cycle.
Recently we had another example with this article, where a team at AWS refactored their architecture and gained speed and reduced cost.
Responses varied, and my favourite by far is this. I’ll even quote:
Even Amazon can't make sense of serverless or microservices.
I mean, OMG.
Here’s a moderate and actually well thought response. I really like the distinction of “Serverless first”:
I don’t advocate “Serverless Only”, and I recommended that if you need sustained high traffic, low latency and higher efficiency, then you should re-implement your rapid prototype as a continuously running autoscaled container, as part of a larger serverless event driven architecture, which is what they did.
And I definitely applaud this statement:
as I do think microservices were over sold as the answer to everything, and I think this may have arisen from vendors who wanted to sell Kubernetes with a simple marketing message that enterprises needed to modernize by using Kubernetes to do cloud native microservices for everything.
Again and again. We’re entering the cloud rationalisation phase and finally figuring out the right application for various tools. We better understand when to do serverless, when to use kubernetes and, more importantly, we are starting to understand that there is no (and never will be) One True Tool/Framework/Methodology. Sometimes you need a knife, sometimes you need a screwdriver.
But don’t we love us some drama.
A side note about that Prime Video story
Since I’m an architect, I’ll comment on what they did.
They had a solution where AWS Step Functions were orchestrating logic in AWS Lambda functions.
They refactored it into a custom orchestration and ECS tasks for the business logics.
From the article
Conceptually, the high-level architecture remained the same.
I mean. Wow. So change.
And to top it off, here’s what Well Architected Framework says about this:
As AWS releases new services and features, it's a best practice to review your existing architectural decisions to verify they continue to be the most cost effective.
So indeed. Start with serverless because it allows quick iteration and lays a clean decoupled architecture. See how it flies, rinse, repeat.
One thing about software architecture that is fundamental is that it has to be refactorable. Unless the problem is trivial, one seldom starts with the correct architecture that will also hold true over time.
Embrace the change.
Side note on microservices
There’s a lot of confusion on what microservices actually are.
Apparently, people discussing the Prime Video refactoring consider placing some code into a lambda function to be a microservice.
Maybe technically it is, since it serves one request (micro) and you can invoke it (service).
Here’s what Amazon says about them
Microservices are an architectural and organizational approach to software development where software is composed of small independent services that communicate over well-defined APIs. These services are owned by small, self-contained teams.
Microservices architectures make applications easier to scale and faster to develop, enabling innovation and accelerating time-to-market for new features.
Here’s from Wikipedia
In software engineering, a microservice architecture is a variant of the service-oriented architecture structural style. It is an architectural pattern that arranges an application as a collection of loosely coupled, fine-grained services, communicating through lightweight protocols. One of its goals is that teams can develop and deploy their services independently of others.
Two things.
It’s a version of SOA. Nothing really new, we’ve had loosely coupled, fine-grained etc for a while.
It’s an organizational approach.
The second part, I believe, is the crucial one.
Microservices do not solve or bring a new architectural approach.
Microservices solve a problem of a big organisation struggling to coordinate releases.
In a traditional hierarchical approach (either evolutionary grown or SaFe), release dependencies are treated using locks, similar to multithreading.
This leads to org-wide feature freezes and other terrible things, where an organisation spends a lot of time coordinating activities and making sure that deployment of A will not affect B, etc ad nauseam. Back to the multithreading, it’s deadlocks.
This is where microservices (and microfrontends) come into play.
In this sense, microservice is a social contract where each team gets full independence in their releases as long as
They expose their functionality as API.
They use API versioning for new deployments and maintain backwards compatibility.
So if team B depends on /v5/someApi
of the team A, team A is free to make changes to someApi at any time, as long as the changes are published as /v6/someApi
and /v5/someApi
doesn’t change its contract or behaviour.
In a way, microservices are a solution to problems described by Conway’s law.
Other than that, they don’t bring anything architecturally new.
So I’d say, Prime Video team didn’t use microservices. And, likely, many other people who think they do, because they have a kubernetes cluster or something equally misleading.
Let us all (including me) learn to see things the way they are. The alternative is (sometimes) exciting, but (always) tiring.
So blessed.
Take care and stop aggressors.
PS. This post is still stubbornly 100% GPT-free.