Live data from Hacker News

Microservices are hard

code-held.com

211–220 of 356 posts

Re: Microservices are hard

#211

Earlier quoted context omitted.

> the situation where those APIs and team boundaries are exclusively (or at least primarily) composed of separate applications communicating over the network

Are you, perhaps, not familiar with Conway's Law?

Conway's law doesn't apply to microservice architecture.

Microservice architecture splits the functionality farther, than Conway's law talks about. When a single team owns 4-5 microservices - that's beyond Conway's law.

Re: Microservices are hard

#213
post #197

There are a few gripes I have with microservices. I think most places rearchitect to microservices because it’s the new shiny. They don’t do the engineering necessary to create a detailed cost/benefit analysis, they just feel it will be better and so they jump in. For the same reasons the companies don’t do the cost/benefit analysis they don’t spend much time thinking about how they could benefit from rearchitecting…

In my experience, most places rearchitect to microservices because they have a shitty monolith that they are dealing with. The monolith has been built over a span of 10+ years. It is fragile, brittle, no one understands how the whole thing works, and large scale refactoring without widespread breakage is near impossible. No one wants to touch it because no one understands how the whole thing works. Because of this th…

> The question "Do we really need multiple databases" is one of the main culprits that spawn distributed monoliths.

It's true the lack of bounded contexts is a big problem. But I also see a lot of orchestration services with multiple dependencies on other services, some of which are themselves orchestration services. This quickly cascades into dependency hell only you don't get the benefit of a compiler to alert you to the problems.

Re: Microservices are hard

#214
post #23

Earlier quoted context omitted.

Scalability and stability. You need to process more requests? Launch more virtual machines, easy. Your microservice is a shit and it crashes every second? Don't care, it will be relaunched automatically.

We learned in the 90s to not distribute the objects and instead just spin up more copied of the whole application. And if only scalability is the point this is still valid.

It's not much that we learned it at the 90's. It's that it became true at around the 90's. It used to be false, but computers became faster, memory more plentiful, and the fundamental physical limitations of networks didn't change a bit (well, fundamental physical limitations never do).

It has become more and more true each passing year.

Re: Microservices are hard

#215

Earlier quoted context omitted.

Are you, perhaps, not familiar with Conway's Law?

Conway's law doesn't apply to microservice architecture. Microservice architecture splits the functionality farther, than Conway's law talks about. When a single team owns 4-5 microservices - that's beyond Conway's law.

It is people who provide service. If the (micro)service produces 4-5 products as part of the service they provide, that's not beyond Conway's Law at all.

Re: Microservices are hard

#216
post #158

I really do not understand the debate on monoliths and microservice anymore. Context matters so much. Should you have absolutely everything in 1 system. No. And I think no one thinks that anymore. Should you spilt your system into as many pieces as possible? No, of course not. You are prop. storing files one place and have a data in a database another place. And most likely none are on the webserver receiving request…

An important part of programming as a discipline is coming up with things that work regardless of context.

Could you give some non trivial examples of architectures or techniques in software engineering that work regardless of the context?

Re: Microservices are hard

#217
post #78

No, they aren't. The entire point of the big ball of mud is that there are no meaningful divisions in the code. Everything uses everything willy-nilly, at the smallest possible level of abstraction. There is, metaphorically if not always entirely literally, not a single line of code in the system that you can change without fear of bringing something else down that you may not have even known they existed. Microservi…

The main reason is to stop crap developers using globals all over the place, or passing around hash maps stuffed full of config that aren't clearly defined in one place just continually mutated (and similar bad issues). Still, crap devs will just find their own ways to mess up with microservices, but at least they limit the blast radius.

They limit the blast radius to the scope of systems that either directly or indirectly call the microservice, which is commonly the same blast radius as a monolith that was replaced by the microservices.

Re: Microservices are hard

#218
> At the point in time when you slice the domains you might not know all the product requirements. Probably a feature will arise which forces you to tangle two services together - now you have one domain. But distributed. Urgs.

Are there any architectures which would allow you to monolithize services like this? Changing product requirements sometimes mean you've just arrived at a better abstraction, which may need you to combine services directly.

Re: Microservices are hard

#219

Earlier quoted context omitted.

> the situation where those APIs and team boundaries are exclusively (or at least primarily) composed of separate applications communicating over the network

Are you, perhaps, not familiar with Conway's Law?

Considering that you've been engaging in strawman arguments this whole thread, I bow out of this discussion.

Re: Microservices are hard

#220
post #158

I really do not understand the debate on monoliths and microservice anymore. Context matters so much. Should you have absolutely everything in 1 system. No. And I think no one thinks that anymore. Should you spilt your system into as many pieces as possible? No, of course not. You are prop. storing files one place and have a data in a database another place. And most likely none are on the webserver receiving request…

An important part of programming as a discipline is coming up with things that work regardless of context.

This sounds interesting, how do you mean? To me it seems like context is perhaps the key element that we should concern ourselves with to further the engineering or scientific aspect of programming.

Let's say we're deciding between floating point arithmetics, fixed decimal numbers, or rational numbers. All three of which are very well-established and useful solutions to the problem of subdividing integers. We have some context already here, and we'll need to provide a bit more context to know which solution to choose. Would you agree with that?

Post reply on HN