| ▲ | IshKebab 4 hours ago | |||||||||||||||||||||||||||||||
The only reasons I've seen to use microservices: * It makes it easier to use multiple different languages. * You can easily scale different parts of your application independently. * Organisational convenience. Usually though you don't need any of that. | ||||||||||||||||||||||||||||||||
| ▲ | teraflop 4 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||
> You can easily scale different parts of your application independently. Just to add that I think some people assume this is something they need, even when there's no basis for it. Do you actually need 1 instance that handles Foo-type requests, and 99 instances that handle Bar-type requests, or would you be fine with 100 instances that are capable of handling either Foo or Bar as necessary? The distinction only really matters if there is some significant fixed overhead associated with being available to serve Foo requests, such that running an extra 99 of those processes has a cost, regardless of how much traffic they serve. For instance, if every Foo server needs GBs of static data to be held in RAM, or needs to be part of a Paxos group, or something like that. But if your services are stateless, then you probably don't benefit at all from scaling them independently. | ||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||
| ▲ | marcosdumay 4 hours ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||
You don't need to split your code over a network to have organizational convenience. Your first point is valid. There are few ways to get it, and it's not clear if services are harder or easier than the alternatives. | ||||||||||||||||||||||||||||||||
| ▲ | worksonmine 3 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||
Sometimes there are reasons to separate projects. I wouldn't put a scraper or pdf generator with the main application. There are benefits to keeping some things small and isolated. Teams that have problems with micro services are doing it wrong. | ||||||||||||||||||||||||||||||||