4 ms·
There are also two purely engineering considerations: scalability and crash isolation. Scalability -- for when your processes no longer fit on a single node, a
by ori_b 8y ago
There are also two purely engineering considerations: scalability and crash isolation.
Scalability -- for when your processes no longer fit on a single node, and you need to split into multiple services handling a subset of the load. This is rare, given that vendors will happily sell you a server with double-digit terabytes of ram.
Crash isolation -- for when you have some components with very complex failure recovery, where "just die and recover from a clean slate" is a good error handling policy. This approach can make debugging easy, and may make sense in a distributed system where you need to handle nodes going away at any time anyways, but it's not a decision to take lightly, especially since there will be constant pressure to "just handle that error, and don't exit in this case", which kills a lot of the simplicity that you gain.
Both are relatively rare.
- deleted 8y ago[deleted]
- deleted 8y ago[deleted]
- jules 8y agoMicroservices are not good for scalability. You want data parallelism, like 20 webservers that all do the same thing. Not splitting your app into 20 microservices all doing something else.