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

Microservices pundits have strategically (or accidentally) engineered the hate for non-microservice design. They chose the term "monolith" to disparage anything that wasn't SOA. "Monolith" has a natural negative connotation so right there, you're winning at the "tech pissing fest" at the bar after work.

The fact is that "monolith" applications can scale, and they can be deployed as a unit and they can still adjust to varying load using modern cloud infrastructure.

The enemy to scale, productivity and success isn't "monoliths". It's complexity! And an experienced and pragmatic developer will tell you that they fight daily to avoid complexity at every turn. Yes, sometimes it's necessary, but they weigh the pros and cons on a case-by-case basis to ensure that the gradient to complexity is always as low as possible.



And, how is complexity caused? What are the origins?

It is caused by bringing together unrelated things.

It is caused by violating the single responsibility principle.

So, we isolate state from communication. We separate interface from implementation. We see as many, where others see one. We try to see the network of dependencies, where others see a single line of code.

Using this new perception, we find that the large application entangles the change of (code) state of one part with every other through its deployment. The static typing guarantees only validate one specific instant in time, but nothing about the future or the past.

So, take a step back and see the deployment of code as a functional part of the code. Now the monolith forms complexity and the microservice isolates it to the minimal surface.

Take it one step further, and we see that the actor model is the exponent of this idea. Late binding, late dependency tracking, programming by behavioural contract.


>And, how is complexity caused? What are the origins? >It is caused by bringing together unrelated things.

It is also caused by wrongly separating things that are closely related and putting a network or something similar in between.

You cannot reduce software development to a formula.


No, so saying outright that microservices are better or worse is just that: a formula.


No, its a categorical consideration made without the needed context. Basically an opinion.




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

Search: