Hacker News new | ask | show | jobs
by threeseed 804 days ago
From experience this happens just as often inside monoliths.

It's a symptom of over-engineering and building for the future rather than anything inherent to microservices. Java had a whole decade of being obsessed with design patterns e.g Facade, Decorator that resulted in the same spaghetti architecture.

2 comments

Microservices invite over-engineering more than monoliths do. Monoliths are more prone to inviting a lack of a structure. That’s kind of…a big potential advantage of microservices, I guess.
That's why moduliths are becoming more popular. These are basically monoliths that enforce structure. The other advantage is that each "module" can be extracted as a micro-service later without much work.
the theoretically nice thing about microservices is that because the API boundary should be well defined, any possible application that can fulfill that API, whether it's Java, Rust, or three raccoons in a trench coat can become the new microservice fairly easy.
All we have are three raccoons in a trashcan, but you'll be able to fit this in the current sprint, right?
The problem with that. Maintenance. Team X writes a micorservice in Node. Team A->W write in elixir. Bug in Micro_X and tada... company is screwed. No one wants to learn Node, so the bugs stay around, get worked around and then Micro_X gets re-written in elixir, because coders have to fix stuff.
That is painfully accurate. My usual response to it is https://despair.com/products/break-the-rules

It usually gives me angry looks at first, but thanks after several years when there's enough turnover.

Terrible engineering is also possible in the monolith, it’s just significantly harder to rewrite sour bits of monolith independently.
At least with a monolith, all of your ball of mud is in-process.