Pages

Tuesday, November 13, 2007

To Scale up or Scale out

I can't sleep so I read lot of boring stuff tonight and hopefully I'll be sleepy by the time I finish up this blog entry. I've been thinking and wandering what are the easiest or the cheapest way to scale any enterprise level web application. I've seen how it done in Windows Clustering but now I'm looking how open source solutions handle this.

One of the article that explain this well was written 3 years ago by John Lim in his blog (caution some links are broken), Enterprise PHP. You can read some guide on scalability, load balancing & high availability. At least you will get some general ideas to start with.

Another good reading material for a load balancing beginner is written by Vivek Viswanathan,
Load Balancing Web Applications. This article are complete with illustration but only cover the load balancing part. I used to had a round robin software solution before and the advantages are clearly pointed out. However I never had a chance to try out the hardware load balancer option.

To sum up, scaling any web application is an expensive venture because it involves hardware and data centre cost, hence you need rack space to relocate your servers. So make very sure you need multiple servers. Try other methods to cater your user traffics like use the Quad-core processor, boost up the ram to the max, use high speed SCSI drives or move out the database into a bigger server with 100 mbps connection between the application server.

One of the term than I learned through all this reading includes, scale up or scale out, derived from the database product literature. Scale up means scaling by moving to a bigger, more powerful server, while scale out means scaling by adding more CPU boxes to a cluster of database servers.

And this is my favorite, the KISS Principle. KISS = Keep It Simple, Stupid is self-descriptive and recognizes two things:
  1. People (including product and service users) generally want things that are simple, meaning easy to learn and use.
  2. A company that makes products or furnishes services may find simplicity an advantage for the company as well, since it tends to shorten time and reduce cost. (Where the company is trying to use the principle on behalf of users, however, design time may take longer and cost more, but the net effect will be beneficial since easy-to-learn-and-use products and services tend to be cheaper to produce and service in the long run.)
Thats should cover it. Now I feel a little sleepy.

No comments: