2. What's the Difference?
• Vertical Scaling “Scale Up”
– Fewer Larger Servers
– You up grade the application environment by
adding more individual resource: more RAM,
faster disk etc etc
– The Classic method of writing web apps relies
on this (one server or a simple cluster)
3. What's the Difference?
• Horizontal Scaling “Scaling out”
– Lots of smaller servers
– You upgrading by adding a new server ( often
called by a Node )
– Nodes can either self contained wholes of the
application or separate functional nodes e.g.
indexing or document generation.
4. Are there advantages?
• Yup Tons!!!
– Upgrading is smoother and more gradual.
– Upgrading can be automated
– If your app is designed well there is no upper
limit to its scale.
– Cost (next Slide)
6. Are there disadvantages?
• Finance Just Doesn't Get it
– In large Corporations you bill for things at a
project or year cycle, the concept that if things
are going REALLY well you will be back for more
money does not go down well
– Plan and display all growth scenarios.
• You have to think about your App design not
just throw it together
– Design an app structure, not just start coding
– Harder to justify the complexity for small websites
and Applications.
7. How to go about it?
• 1) Pick Infrastructure that supports
dynamic server/node creation
– Finally a proper use for Cloud services
other than giving directors something to
drool over.
– If on site: virtualisation
• Often hard to plan correctly and maintain the
required none used space.
8. How to go about it?
• 2) Pick a platform that makes it easy
– New newer generation of No-SQL servers
(Mongo db, Cassandra, etc)
– Node.js and other low cost webservers
(Apache, Nginx, Lighttpd) as you don’t
want to be wasting processor cycles
multiple times on servers with extraneous
services.
9. How to go about it?
• 3) Take advantage of all the tricks
– Use CDN(Content delivery network) to
move your none secure static content to
other systems eg. Plain Nginx webservers
or something like Amazon CloudFront
– Move Current State to the Database not the
Application Server
• Yes it sounds odd but it means any of your app
servers can handle any existing session and so
there is no transactional state and you can
just add more servers at will.
10. Last Notes
• You can design your app to be both
vertically and horizontally scalable
– Break it into modules that can be run on
separate servers if needed
– Now is the time to learn how to deal with
parallel tasking (even if its not classic
threading)
• Watch out for building code bottle necks into
your nice new infrastructure