Lately I’ve been investigating how to host a web application I’m building. Being a personal project I’ve also been debating what technologies I’d like to use to write it. I pay for a hosting account for this blog that includes Ruby on Rails and Django but it’s really a developer account. I’m also not sure that I want to use Rails or Python. I’m a Java developer during my day job and I have been thinking about expanding my skills in that area with this project because I don’t have that option at work. In the end I think it boils down to two options: Google AppEngine or Amazon EC2. The question is which one?
Amazon EC2 certainly gives the most flexibility since it is essentially my own machine(s) running my own operating system choice and whatever software I want to run. I can use whatever language I want. It is easy to scale up when necessary and the charges that apply only apply to the actual resources used. It is also a lot of work and it’s not cheap. There is no free tier that would be appropriate for this project given its status. To keep an instance up full-time would be cost-prohibitive right now.
On the other hand there is Google AppEngine. It isn’t as flexible because I don’t have most of the choice I would have with Amazon EC2. The flip side is that they do have a free tier. 500MB of storage and 5 million page views a month (as far as CPU and bandwidth goes) is a lot for just starting a project. The pricing is hard to compare to EC2 because not everything compares equally but for most things the pricing is relatively equal. On Google AppEngine I don’t have to worry about running an instance full-time. Charges are only incurred when an application is accessed as far as bandwidth and CPU time are concerned.
Google also gives a pretty nice choice as far as development languages go. Python and Java are the two main languages that are supported with Spring support for Java and Django support for Python. Database storage is a bit different but they enable ORM storage for Java using JDO. They also pretty much support any language that runs on the Java VM with some restrictions. People are running Groovy/Grails, JRuby/Rails, Jython, Scala, etc. It isn’t as flexible ultimately as EC2 but it’s pretty damn good.
I think I’ve made my choice. Google AppEngine seems to be the way to go considering all sides of the decision. Good options, good pricing, the tools I’m already used to using (Eclipse or NetBeans). Is there any reason I wouldn’t choose AppEngine over EC2?