> I would be very curious what kind of strategy 37signals has with their 
> Basecamp. Maybe David can elaborate on that if it is not a big secret. 
> I am very eager to hear about specific choices from anyone who has 
> similiar experience.

Like Lothar says, it depends on your application. Basecamp has fairly 
complex relations in the domain model, but our load isn't that high 
because each site is only used by a firm and a client, which is usually 
less than 10 people. That would be unlike some high-load e-commerce 
site that needs to be accessible to the world. So we're blessed in that 
way.

Hence, our current approach is mod_ruby/mysql on a single box. We're 
just in the process of making that single box of stronger iron, but 
that's definitely the easiest way. Stay on a single box as long as you 
can. Next, move the database to a separate machine. Then start thinking 
about scaling the application server. (Or you may start thinking 
beforehand as you do now, just no need to commit the dollars)

Our strategy for scaling the application server is also to go the FCGI 
route. Basecamp works more like a PHP app than a Java app on that 
point, so state is only kept in the database (and currently 
CGI::Session on the file system, but that's easy to move to either 
database or shared DRb server). That means the database handles all the 
synchronizing and we can just add more application servers (running 
FCGI) as the load increases. When the database needs scaling, I hear 
MySQL is also very much up for that job.

The biggest bottleneck is rendering templates in Ruby. We're currently 
just using vanilla ERb with no template caching and we feel that on 
complex templates.

But all of this ties into your business model as well. It needs to be 
profitable to add additional hardware. In the case of Basecamp, it's 
very much so. More customers directly equals more revenue, which makes 
expanding the server park no problem at all.

Basecamp is running Ruby on Rails[1] with Apache/mod_ruby. As I said, 
it'll probably be running on FCGI before long as we look at add another 
application server.

COMMERCIAL: If you happen to be in Chicago on June 25th, we'll be 
realing all about Basecamp and Rails in a one-day workshop. There's 
more information on http://www.37signals.com/workshop-062504.php.

[1] http://www.rubyonrails.org
--
David Heinemeier Hansson,
http://www.instiki.org/      -- A No-Step-Three Wiki in Ruby
http://www.basecamphq.com/   -- Web-based Project Management
http://www.loudthinking.com/ -- Broadcasting Brain