2. What is scalability?
Computer applications have well defined capacity limits. A system might properly handle a few
thousand user requests, but when numbers go way up to tens or hundreds of thousands, it may
not behave correctly – or not work at all.
Scalability = Ability to manage increased workload properly, given certain capacity limits.
3. Vertical / Scale up
Popeye: http://northlondonchurch.org/userfiles/image/adoptionism-popeye-spinach.png
Increase overall application capacity by adding resources to existing nodes.
4. Horizontal / Scale out
Gremlins: http://www.wolfgnards.com/media/blogs/photos/miscellaneous/mogwai-water.jpg
Increase overall application capacity by adding nodes.
7. Side to side
SCALE UP
• Simple App Design
• No Load Balance required
• Limited
• Single Point of Failure remains
• No latency improvements
• Complex Disaster Recovery strategy
• Manual
SCALE OUT
• Can be closer to the end user
• Easier Disaster Recovery Strategies
• Possibly need of a Load Balance strategy
• Possible unlimited
• App must be multi-instance safe
• Can be automatic
Consider a roadway for automobile travel. If the roadway was unable to support the desired volume of traffic, we could improve matters in a number of possible ways. One improvement would be to upgrade the road materials (“the hardware”) from a dirt road to pavement to support higher travel speeds. This is vertically scaling up; the cars and trucks (“the software”) will be able to go faster. Alternatively, we could widen the road to multiple lanes. This is horizontally scaling out; more cars and trucks can drive in parallel. And of course we could both upgrade the road materials and add more lanes, combining scaling up with scaling out.