> 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