views:

41

answers:

4

I run a Rails web app that generally has moderate traffic (100 requests/hour at most). However, I get a relatively high burst of traffic once every few weeks (50 requests/sec for 2 hours) at a time that I can anticipate. Over the next few months, I expect both the moderate and peak traffic to increase, but their relative magnitudes will likely remain proportional.

Where is the best place to host something like this? I've used EC2 in the past to ramp up processing, but are there other options that might be more cost effective (I don't need a huge amount of storage)? What about Heroku, Linode, or Slicehost?

+2  A: 

Heroku is really easy.

When you're ready for a traffic burst, move a knob up the slider (number of "dynos", or units of concurrency on Heroku).

When you're done with the burst, move the knob back down the slider.

Heroku bills for dynos used prorated to the second. If you ramp up the dynos for 5,923 seconds and then ramp back down, that's what you'll be billed for.

Heroku takes care of deploying your app from the "compiled slug" that it created when you did a git push heroku master to all the new dynos. You do not need to do anything beyond move the slider in order to prepare for burst traffic.

Justice
+1  A: 

I'll second the recommendation for Heroku. Since you know ahead of time when you're going to need more capacity you could have a cron job running on a local system that adjusts the number of dynos automatically.

Check out the Heroku command line docs for the dyno option.

jdl
A: 

Slicehost is pretty exceptional. The only issue I would see is that you would have to resize the slice manually.

Josh K
That's kind-of a huge issue, no? I've had only good results with Slicehost, but manually resizing a slice multiple times per week, while it's running in production mode seems like a bad idea.
jdl
A: 

You could check also eApps which offers you the option to upgrade/downgrade at any time. If the upgrade/downgrade takes place in the same category of plans, the process runs automatically.

Camy