I found a great article “Farms, clones, partitions, packs, RACS, and RAPS – Improve your scalability vocabulary” by Bill Devlin,Jim Gray,Bill Laing,George Spix from Microsoft. It summarize most main concepts I came across after weeks of reading on building a scalable system.
Two main ways of building a scalable system is cloning and partitioning.
Cloning offer both scalability and availability. But the problem with cloning is bad write performance and constrain of memory.
Partitioning divide data among nodes. It offer scalability. And availability can be achieved by replication data on a backup machine.But the problem with partitions is sometime it is difficult to do the partition in real life because of great dependences.
Following is the table of scalability taxonomy