Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Vertical vs Horizontal Scaling


Published on

Published in: Technology
  • Be the first to comment

Vertical vs Horizontal Scaling

  1. 1. Vertical vs Horizontal Application Scaling
  2. 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. 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. 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)
  5. 5. Cost Comparison Image Source:
  6. 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. 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. 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. 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. 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