6 ms·
As with everything in software architecture: everything is a compromise. At large scale, and for application running on end-user devices, I try to keep as much
by fguerraz 5y ago
As with everything in software architecture: everything is a compromise.
At large scale, and for application running on end-user devices, I try to keep as much as possible complexity in the software because you don't pay for its execution.
But again, that's a compromise that depends on scale and infrastructure costs.
- ignoramous 5y agoIf the app drains too much battery, the #1 thing smartphone users care about, then expect a dismal rating and uninstall ratio. As with anything software, the more there's code, the more the potential for bugs. Things should always be engineered to optimize for that metric (lower bugs). Of course, if it is cheaper/safer/secure to do something at the client, then its benefits must be factored against the complexity it may introduce.
- secondaryacct 5y agoHe said compromise you talk in absolutes.
- StriverGuy 5y agoI really doubt battery usage is the #1 thing users care about...I'd imagine users care about intuitiveness, usability, value way before worrying an app kills their batter 3% faster than other apps...
- egypturnash 5y agoGet a phone that's a few years old, with a battery whose capacity is severely reduced. Use it as your only phone for a month or two. See how you feel about battery-draining apps then.
- cortexio 5y agoThat sounds nice, but is it actually true? maybe.. but i dont think so. And the more infrastructure u have, the more problems you will have with infrastructure. So...
- fguerraz 5y agoDoing load balancing at the client level if you can for example is not something that's going to significantly increase power usage but it has the opportunity to reduce infrastructure cost at the expense of complexity. That's the sort of compromise I'm taking about.
- ignoramous 5y agoGotcha. For load balancing in particular, one is better off doing it server-side. Many reasons, one among them being ability to change load balancing strategies in face of unforeseen circumstances.