top | item 37477315

(no title)

new_here | 2 years ago

Posts laden with cynicism are always popular on HN. Gets boring after a while. Was hoping for a more measured take on a genuine issue like this.

discuss

order

hughesjj|2 years ago

There's always something hot to hate on. I'm getting flashbacks to the days where everyone was going "nosql is trash" because they all cargo culted to mongodb back in the day and then tried to do olap on it.

Heck, this isn't even the first time SOA has been in the frame of hate. Member SOAP? Member how everyone more or less jumps between doing everything on the server vs everything on the client every year? We've been having that battle ever since networking or things clients have been a thing, the "sportsification" of that dichotomy is older than I am.

I like the other person's take in this thread about how you can largely get the semantic benefits of micro services by making a well crafted monolith. I honestly agree, but I think the followup is "aren't people who poorly break up service boundaries going to go do regardless if the interface is a network endpoint or a function call/dependency injected class?"

throwaway_036|2 years ago

> "aren't people who poorly break up service boundaries going to go do regardless if the interface is a network endpoint or a function call/dependency injected class?"

Today there are several tools we can use that enforces boundaries in a monolith (Spring Modulith for example). If the project uses one of these tools, it is harder to accidentally cross boundaries and you get many of the same benefits as you get with a micro service.

The big advantage is that if you find out that you made a mistake, your only dependencies are within the same service and is easier to refactor. In a micro service oriented architecture, changes might impact several services and teams that needs to be coordinated. I'm not saying that refactoring a monolith can't be time consuming, but you have at least a better control of the flow of data between modules.

smokel|2 years ago

An interesting angle would be how to get out of this mess.

Here's one: In politics we see national and supranational governments take on the job of making large decisions. Style guides and best practices on whether to use microservices or not are, at best, made at a company level.

Would it be interesting if these architecture decisions were made, or at least kept in check by a body that is larger than a company?

Perhaps we could have some laws that dictate that you must (at least partially) understand how software works before you can buy it. Especially for government contracts.

threeseed|2 years ago

Just a lesson in life.

The second you think you are smarter and more informed than the people on the ground is the second you revealed yourself to be a fool.

Because having spent decades working for government and enterprises I can assure you that we aren't all stupid and need laws to protect us from ourselves. Instead we are often placed in really challenging and unique circumstances that drive the architecture and design of what gets built.

For example micro-services often works well in places where you have distributed teams that for security, governance or logistical reasons need to work independently and can't collaborate effectively with a monolith architecture. Or where certain components e.g. authentication, payments need a hard separation from the rest of the platform.

corethree|2 years ago

I'm actually sick of the apples and oranges view point.

There's always someone saying that everything is a different tool in the toolbox.

The reality is some tools are honest to god pieces of shit. That's where the interesting content is.

The whole fair and balanced viewpoint is played out, boring and obvious.