SOrry to rain on your parade. You won't learn about horizontal  
scalability by building a proof of concept application using a single  
architecture

My guess is their are a few ways to learn this- through experience or  
through reading and neither require Ruby (though Ruby isn't apriori  
bad for this) There's a nice 1000page book called "Distributed  
Systems" by Coulouris but in 2007 you're possibly well served using  
wikipedia as a jumping off point and learning the following concepts:

Amdahl's Law, cache coherency, distributed computing, Distributed  
Shared Memory,  MPP, Multiprocessing, Multitasking, NUMA,  
parallelism, shared nothing, SMP, virtual synchrony.

If you are using VMs why stop at two?

Peter

On Mar 7, 2007, at 12:40 PM, Greg Loriman wrote:

> Hi folks,
>
> I posted this in railsweenie, but it's not really a rails question,  
> and the
> post isn;t getting any answers.
>
> I'm not an experienced web developer. I'm still rather groping  
> around. I
> come from a client server background. I've plumped for Rails,  
> although this
> post's focus isn't really Rails.
>
> I'm putting together a relatively simple site which I want to  
> design from
> the ground up for horizontal scalability, partly for the challenge,  
> partly
> because I need to learn and get experience. To help me do this I am  
> going to
> run at least two virtual machines to enforce the correct environment.
>
> Currently my idea is to federate the data so that the users are  
> divided
> between the 2 or more machines, perhaps splitting alphabetically by  
> user
> name (ie. A-G to machine 1, etc). Where there is interaction  
> between account
> holders I am thinking of Drb'ing. Obviously rails is not going to  
> be able to
> do the interaction side of things, but I am fine with that; I'm  
> prepared for
> a bit of manual labour.
>
> I would love comments/advice on my above ideas, and further  
> insights into
> horizontal scaling.
>
> But also....
>
> To facilitate the above I need some kind of proxy in front of the two
> machines directing incoming requests to the correct machine based  
> on the
> login name which will be part of the url. Here I come unstuck since  
> I have
> no idea how to do this.
>
> There must be proxies of this kind, but I'll be blowed if I know  
> what an
> appropriate one would be, or where to start in making it do what I  
> want.
>
> Can anyone give me a few pointers? Is squid the thing? Mongrel (I  
> don't
> really know what mongrel is)? Can apache be made to do this, and if  
> so is it
> a bad idea? Obviously it needs to be pluggable since I'll be using  
> my own
> code (C or Pascal) to do the lookups for the redirection.
>
> Thanks for your words of wisdom,
>
> Greg
>
>
>

Peter Booth
peter_booth / mac.com
917 445 5663