4 ms·
Is this a good place for redundant microservices? Each service handles data from a handful of physical of physical knobs. At least that way you don't have the
by twomoretime 7y ago
Is this a good place for redundant microservices?
Each service handles data from a handful of physical of physical knobs.
At least that way you don't have the UI as a single point of failure.
- mattmanser 7y agoThere is no good point for "redundant" microservices. They are, by very definition, an additional point of failure as you're always adding an additional interface. They're good for scaling, not for redundancy, and even that's wishful thinking for most applications. EDIT: You could argue that microservices might free up the UI thread from locking mistakes, but if your team is going to make locking mistakes, you're also going to make mistakes in the microservice interfaces, so what's the point?
- twomoretime 7y agoIt's not about minimizing points of failure, it's about removing singular points of failure. Perhaps "redundant" was the wrong word but the point is instead of having a single UI component (touchscreen/UI thread) which can cause the whole system to fail, if you group buttons/knobs into individual microservices they are unlikely to all go down simultaneously.
- mattmanser 7y agoI don't get how we can explain it in a simpler way? If you add a microservice, you're adding another point of failure. You add another interaction, you add more code. Add more code, you add more bugs. It's pretty much the only empirical thing we have in software engineering, more code = more bugs. Lots of little microservices means lots of extra code means lots of extra bugs. Plus you've got to manage how they all interact. Which microservice has priotity? Did you even think of that? The breaking microservice? Or the volume microservice? Did you even think of that or try and test that? Your breaks get disabled every time you turn up the volume? Whoops, you just killed a thousand people with your "redundant" microservices.
- hvidgaard 7y agoErlang is build around the idea of microservices and message parsing. It's by far one of the best languages we have to make fail tolerant programs - it was invented to solve exactly that problem. While it does not mean you can take every program in any language and make them into a micro service architecture, it shows that if implemented correctly, the idea of microservices and messages absolutely increase reliability.
- dkersten 7y agoIf you add one microservice, you add a point if failure, but if you then add a few redundant copies of that microservice, for failover, then you don’t add a point of failure.
- asfarley 7y agoDo you object to redundancy under all circumstances, or only when it’s preceded by “microservice”?
- yakshaving_jgt 7y agoSo… You're suggesting reducing the impact of potential error… By increasing the surface area of potential error…?!
- dkersten 7y agoIt depends on the error. If its a logic error that will deterministically break all instances, then sure. If, on the other hand, its a transient error that a backup copy of the service can avoid, then redundancy adds safety. Sometimes safety critical software has multiple redundant units which need to agree, too, for example.