Apps
Web apps all have the same structure -- series of files running on a server "stack", accessed sequentially from middleware, or framework-based load structure
Your question, therefore, is more about which stack is going to be most scaleable, efficient, robust & expansive (can add extra resources). Here are the options:
Heroku
- "Managed" cloud (environment already set up)
- Runs off AWS instances
- Versatile (runs any gem / app)
- Owned by Salesforce
- Lots of add-ons
- Highly scalable
- Not sure about price
- Easy deployment (
git push heroku master
)
Cloud (AWS / Rackspace)
- "Full" cloud
- You're responsible for environment (OS, gems, ruby ver etc)
- You're responsible for uptime
- You have to maintain db etc yourself
- Scaling can be a pain in the ass
- Can deploy your app in a totally bespoke environment
- Performance likely won't be issue (have 100's of servers to pool from)
VPS
- "Shared" hosting
- Have to install environment yourself
- Very tricky to keep gems / ruby / rails up to date
- Have to maintain the db etc yourself
- Not many companies actually offer decent VPS
- Costs more than Heroku
- Not very scaleable
- If someone else causes issues on the server, your app gets hit too
We use Heroku for all "baby" apps - AWS / Rackspace for apps with growth