views:

134

answers:

2

we are currently developing a high traffic facebook application. all the traffic will be within one month, where there are 500.000 to 1.000.000 expected users. after that month, the game is over and we have a winner - so the app will be archived.

we are currently planning to develop the application with ruby on rails and searching for hosting options that can deal with the traffic. the problem is not so much the users, but the peak values: we will have around 500.000 requests coming daily within a short timeframe (lets say within 3 minutes in the worst case)

we are expecting 500.000 to 1.000.000 users of the application, with peaks at 1:00pm (timezone GMT+1), where most (up to 80% of the users) will send most of the requests. the requests are from 11th of june to 11.july - after that, the app/game is closed/over.

we are currently developing an aggressive caching mechanism - currently we are thinking about 2 or 3 small apps/webservices, that will handle the load.

the load is distributed as follows: a) main application, cached data (11 screens, 200k each) b) voting: every day until 1:00pm (timezone GMT+1) - every user votes with about 10k data sent, high concurrent peak values!

questions:

  • is there any specific application setup that is recommendable?
  • are there any hosting partners that can be recommended?

thanks!

+3  A: 

Well if the content you serve out is all cached then you are good with that, a few nginx instances can serve almost unlimited static pages.

The voting sounds less nice since it is supposed to happen all at the same time. The new hotness for high concurrent loads seems to be node.js but I don't have any experience with that.

I do think though that the voting will not actually do very much so instead of doing a full rails stack call try to just write a small rack method that accomplishes the voting. That saves you from loading ActionController, ActionView and if you write your votes to the DB in plain SQL also ActiveRecord.

nasmorn
A: 

Check out some auto scaling cloud computing solutions such as EC2's AutoScaling http://aws.amazon.com/autoscaling/ you set parameters as to when EC2 will spin up new instances for you.

If you really want to be careful you can then build a botnet to simulate traffic to your site http://www.talcottsystems.com/articles/build-your-own-botnet-with-ec2-and-capistrano-to-load-test-your-server-cluster-before-launch/

ThinkBohemian