Dimensions of Scalability
jenniferplusplus.com
jenniferplusplus.com
As math:
Scalability = δ Performance / δ x
... where x can be almost anything.Take note: performance == "throughput" in most cases.
THEREFORE, when scalability questions arise, you should be specific about which dimension of scalability is in question.
Some dimensions of “scalability”
* Number of customers
* Total number of users
* Number of concurrent users
* Number of locations where a business or application runs
* Size of the database
* Transaction volume
* Output volume
* Response time
It's way more useful to define it as the maximum X such that dPerformance / dX is higher than some minimum viable amount. So you can say things like "this algorithm scales up to 1000 requests for second on our infrastructure"
If you multiply your infrastructure by n, what RPS does your algorithm now scale up to? 1000n is good. > 1000n is excellent. < 1000n is not scalable.
You've read it wrong. That number doesn't change with the size of your infrastructure, it changes with its cost/size.
If someone tells me that an algorithm scales to 1000 RPS on their infrastructure, and we are having a conversation about scalability, I am interested in what I have to do to increase the number of requests per second by some factor.
Unless what you meant by 1000 RPS was 1000 RPS per server, say. In which case you're claiming that your system scales linearly - adding another server adds another 1000RPS.
Your infrastructure imposes a cost structure. Any scalable algorithm will give you sublinear performance gains while you add those costs. At some point, the costs explode, and solving more of the problem isn't economical anymore. Thus, any algorithm will have a maximum capacity at your infrastructure. (1000 RPS is quite low tough, it may have been a bad example.)
Economies of scale are a thing. Do you think the marginal cost to AWS of adding more storage servers to S3 increases over time? Or does each additional server amortize a little more fixed cost and only increase the support cost logarithmically, meaning it effectively costs less?
At least maybe address how your thinking about scalability in this way fits with or contradicts the original article.
This is a related problem with what is discussed in The Mythical Man-Month, is not about building a program, but keeping a complex system running and evolving. And to make things worse, you can put another identical computer and handle twice the load. But people are not identical, and not just in knowledge that can be written down and transmitted but in different skills and areas covered.