4 ms·
Scalability is about more than operations/second or any single metric, it's about making a service/system that can survive at scale, both technically and logis
by efsavage 14y ago
Scalability is about more than operations/second or any single metric, it's about making a service/system that can survive at scale, both technically and logistically. A server that goes 10x faster than it's competitor but cannot work with other servers to go to 100x is not a scalable solution, whether that reason is because of some low level networking limitation or a high level programming or administration limitation.
More semantics, but over-engineering is about more than making things complicated. If a tool doesn't do what it was intended to do, or if you've ignored the proper level of complexity, it's because it was badly engineered, not over-engineered. Good engineering will "over-engineer" things as much as possible within the constraints of the solution.
And if you keep that in mind, then you really can't over-engineer things or make them too scalable.
- jacques_chester 14y agoYou're sorta kinda conflating two distinct axes of scalability: vertical and horizontal. A system which is vertically scalable is one which will run faster (for a given definition of "faster") on chunkier hardware. A system which is horizontally scalable in theory becomes faster by adding more independent hardware. In this age of spinning up anonymous VPSes by the handful that's an attractive quality. However, horizontal scalability levies a very heavy architectural tax. Nobody has produced a convincing platform that successfully abstracts away the many, many moving parts and oversight that horizontal scaling requires in the same way that an operating system can abstract away a lot of the complexities of vertical scaling. So what happens is that you spend less time thinking about the problem domain and more thinking about the solution domain. And which one does the user care about, again?
- bmelton 14y agoSince we're being pedantic, scalability doesn't mean "becomes faster". Your definitions are generally right if you replace "becomes faster" with "handles more load". Something that scales is something that can handle additional load without slowing down as much as the next thing, or that has a prescriptive method for preventing such slowdowns (like adding more hardware or moving to a bigger server). You're generally spot on but for that point though.
- jacques_chester 14y agoI should've used "throughput" as the metric of discussion.
- efsavage 14y agoMy point was not clearly made. I'm not talking about vertical or horizontal, I would put them both in the "technical" category of scaling. I meant to say that scalability is not something that can simply grow to meet a certain load, it is a concept that your system "can survive at scale" in whatever form that scale takes. It encompasses many things like having more servers, bigger servers, more people working on the servers, more users, longer sessions, more activity per user, supports more features, and so on. It's a semantic point, but it seemed like the author had a very narrow idea of the terms he was using, and was complaining more about his own definitions than the concepts themselves. And the user cares about all of them, indirectly. They all matter because failing at any one of them are reasons to use something else, whether it's simply slow performance or because your high performance system is so brittle you can't evolve, or downtimes because your high performance, quickly evolving system requires more admins than you can afford, and so on.
- jacques_chester 14y agoAll well and good. But you can go a long way -- a very long way these days -- with vertical scaling alone. As Stack Overflow have pretty convincingly demonstrated.