Hacker News new | ask | show | jobs
by nnamtr 1893 days ago
$reason = Make the microservices independent of each other, so you can rewrite and replace them without much trouble when they're getting old.
2 comments

This is just modularisation though. You can modularise without microservices. Microservices solve a scaling problem, not a design flexibility problem.
Micro services often solve _an organizational scaling_ problem, and are less frequently deployed for _performance scaling_.
a monorepo also solves that same organisational scaling problem, but without introducing the artificial problem of basic function calls having to traverse the network, and having to keep tons of different services online and talking to each other.
Yeah, but it turns out people can’t actually write software right (or won’t) and this sort of network boundary is the only way to force them to write modular code, without the monolith collapsing into a tangled mess.

It’s really annoying.

yes one of the biggest problems in software development is that most developers are bad at their jobs.

the solution, however, would be to hire a small number of really good developers and have code reviews run through them - hopefully teaching the more average developers how to code better in the process.

It’s so simple. You just need to devise the world’s first 100% predictive interview process
Since servers are ephemeral, any function call of note will need to traverse the network in some way anyway.
that's true, but there's traversing 2 links for a simple client<->server<->database setup, or traversing dozens or even hundreds of links for a microservice architecture, adding tons of fragility for no unique benefit.
Well, there are legitimate benefits, it's just that few organizations are poised to understand/utilize them.
The flip side to that is that you end up with a dozen services built with different technologies/languages and you spend all your time upgrading them or replacing them instead of building new features.

At least one of them will be guaranteed to be built with some technology/language (probably Scala or Elixir) that one of your engineers (who's since left) was interested in for a few weeks.