Found in 1 comment on Hacker News
mindcrime · 2010-07-13 · Original thread
I'm still not the world's foremost expert, but what I do know I've learned through a combination of trial and error, reading books (I'll edit this later and put in a couple of specific titles), reading stuff on the 'Net and classes I took in school (I did a degree in "High Performance Computing" which had some useful aspects to it).

A good place to start, if you're not already familiar with it, is High Scalability:

Edit: book recommendations:

Scalable Internet Architectures -

Linux Clustering - Building and Maintaining Linux Clusters -

High Performance Linux Clusters -

Linux Enterprise Cluster -

Java Message Service -

Java Message Service API Tutorial and Reference -

Enterprise JMS Programming -

Hadoop: The Definitive Guide -

Pro Hadoop -


It's important to understand the difference between vertical scaling and horizontal scaling. Horizontal is very en vogue these days, especially with commodity hardware. Why? Because you can add power incrementally without spending tons of money upfront, and without requiring a "forklift upgrade" (that is a reference to needing a forklift to bring in a new mainframe or minicomputer). This is a pretty good article on the topic:

As popular as horizontal scaling is, don't ignore the possibilities of going to bigger hardware though. It has it's own advantages, especially when you start talking about physical floor space to store servers.

Of course "cloud computing" changes some of this, both by making it cheap and easy to add VPS's to scale horizontally, or by making it possible (sometimes) to easily add more processing power, RAM, etc. to your "server." Read up on Xen, KVM, EC2, etc. for more on that whole deal.

Fresh book recommendations delivered straight to your inbox every Thursday.