It seems a little absurd to suggest that we all need to be concerned with the infrastructure that twitter (one of the most frequented sites on the web) needs to make a decision on what kind of infrastructure we need to run 90% of all other web applications. We could suggest that we need a space shuttle to go to work in the morning, but unless your commute takes you to low orbit, maybe it is better, more convenient, and more enjoyable to drive a car. At my office, we have many rails apps running and usually only need 2, or at most 4 thin (its a competing server to mongrel) instances to manage the traffic to the app. This includes many heavy server requests, like pdf generation, data synchronization, and complex queries with 5 million or so records. We use a standard mysql database with redundant writes to two instances for data security. This mysql database manages 5 fairly heavily used apps with significant public health information for state agencies and managing mission critical applications for the agencies. Finally with services like Heroku and the EngineYard Cloud services, scaling is really just a matter of moving a toggle on a web interface. In a vast degree of situations, platform as a service totally mitigates the hardware hurdle and would be the direction I would aim most parties interested in scaling their app in the future. But it seems for most projects, scaling means moving the app to a more performant vps, or dedicating a mysql server, or choosing a different persistence layer all together. It rarely employs the strategies that a site like Twitter needs to manage millions of requests per second.
www.heroku.com, if you are interested. In the end it all comes down to deciding what you need for your app, but unless you really need all the overhead of database sharding, and the other topics discussed in this thread, the real question comes down to which tool you are going to love using. I love writing Ruby, I enjoy the productivity I get from using Rails, I cringe at the though of writing 'public static void main'. But I have to say, the JVM rules, which is why I'm glad clojure exists! Consider that it would be ridiculous to write a blog app in rails when there is wordpress. In the same vein, it is silly to consider a huge app footprint and hardware setup cost if it is not necessary to meet the business objective. I would start by employing YAGNI (You Ain't Gonna Need It) Jed
