I define "scalability" as "the ability of a software system to cope as the size of the problem increases".
Note that scalability and performance are related, but different. Explaining these terms in the language of calculus, if performance is a function, scalability is about the first derivative of that function. A piece of software can be very scalable, even if its performance is poor for small values of n. For example, I've heard people describe Exchange that way. Apparently an Exchange server with 5 users is kind of slow, but an Exchange server with 5,000 users is no slower. (I've never used Exchange so I can't really say if that's true.)
When I say "the size of the problem", I am speaking very generally. Continuing my notion of a mathematical curve, scalability can involve different variables on the X axis. A product might scale very well for large numbers of users but very poorly for large quantities of data. A database might scale very well for large numbers of rows but very poorly when the individual rows are large.
Finally, let's not confine scalability to things which can be measured with a stopwatch. Sometimes scalability problems are a bit more qualitative. For example, the Vault Admin tool presents the list of users in a regular Windows listbox control. That's fine with 100 users, but it's not exactly the right UI for a system with 5,000 users.
What is it that we really mean by scalability? A service is said to be scalable if when we increase the resources in a system, it results in increased performance in a manner proportional to resources added. Increasing performance in general means serving more units of work, but it can also be to handle larger units of work, such as when datasets grow.
Is achieving good scalability possible? Absolutely, but only if we architect and engineer our systems to take scalability into account. For the systems we build we must carefully inspect along which axis we expect the system to grow, where redundancy is required, and how one should handle heterogeneity in this system, and make sure that architects are aware of which tools they can use for under which conditions, and what the common pitfalls are.
1 comment:
Thanks BUDDY!
Good work
your article solved my problem & i was able to get full marks in my presentation.
Thanks once again...
Daudpota
Post a Comment