Look at Heroku first when designing a web application
- Very easy to use platform as a service. If you are running a node.js application, the only thing you need to do is to specify the node and npm versions in your package.json and be sure that you are referencing the port provided in your environment rather than hard-coding a port number.
- Really good set of partners. It's easy to try out a wide range of partner applications from within the Heroku environment. Most have a free trial option.
- Single management console for your application. You can access the administrative function for any application from within Heroku.
- Platform as a service is an absolutely unbeatable way to build out a scalable web application with minimial up front investment. When I compare building out on Heroku to building out on AWS with RightScale, Chef, or Putty, I think that it is an order of magnitude faster. And those options are at least an order of magnitude faster and cheaper than building your own server cluster.
- Heroku also provides a very reliable production environment that dramatically reduces any ongoing operational cost from a manpower perspective. You would have to have a very large production environment to reach the point where the incremental expense that you pay for the platform as a service is greater than the cost of hiring a devops engineer to create/manage an equivalent capability.
- The other big benefit is the rapid deployment of test systems.
The big advantage of Heroku over a direct AWS implementation is that you don't have to mess with the web dispatcher tier of the application at all. Doing a scalable web application on AWS is a well-known configuration, but it is a bit of a grind to set everything up and have it switch over when you upgrade your application tier automatically. With Heroku, it's automatic. For a small startup, time is your most precious resource so having this done for me was invaluable.
I chose Heroku over Nodejitsu/Joyent primarily because of maturity. I will definitely be keeping my eye on them in the future though. At the time of the decision, my biggest show-stopper was that we could not do custom SSL without jumping up to a dedicated environment. This may have changed since then.
- We run our production application servers on top of Heroku.
- We also run a number of test applications in Heroku mostly using a configuration with just one dyno (i.e. free). Many of the third-party services we use also provide scaled down free options, so we can set up very small test sites for little or no cost.
- Implemented in-house
- Self-taught