Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The push to fragmentation and atomism is so strong with this generation of devs. The obsession with microservices, dozens of small repositories, splitting everything up from fear of "monoliths."

What they're doing is creating a mass of complexity that is turning org-chart problems into future technical ones and at the same time not recognizing the intrinsic internal dependencies of the software systems they're building.

Luckily my current job is not like this, but the last one was, and I couldn't believe the wasted hours spent doing things as simple as updating the fields in a protobuf schema file.



That push to fragmentation is in large part because of hard lessons learned from the problems of a monolith.

The answer is IMO somewhere in between. Microservices can get too tiny and thus the system becomes impossible to understand. However a monolith is impossible to understand as well.

The real problem is you need good upfront architecture to figure out how the whole system fits together. However that is really hard to get right (and Agile discourages it - which is right for small projects where those architects add complex things to mitigate problems you will never have)


Monolith != Monorepo. They're independent concepts.


I work at a company that has several micro services and a backend all in one monorepo. For some anecdata.


The tooling defaults around Github encourage having one thing per repo.


A monolith can (and often does) consist of separately versioned libraries.



In my experience microservices are easier to manage and understand when organized in a monorepo.


That indicates a strong coupling between those microservices.


Even loose coupling is still coupling. For the things that have to be coupled having the code organized in the same place, being able to easily read the source for “the other side”, make a change and verify that dependees test still pass, etc is immensely powerful.


I like using the term “distributed monolith” for those systems with very tightly coupled microservices.


Large software projects cycle back and forth between fragmentation and defragmentation. There is no right answer, only what's right for each project at the time.

Relevant xkcd: https://xkcd.com/2044/




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: