Heroku Review

All That Cloud: Amazon, Google App Engine, Windows Azure, Heroku, Jelastic

You wanna be in the cloud? You have plenty of options. I’ve evaluated or used many of them, so here are a few words about each. (I will include some Java-related comments, as I’m using Java, but most of the things apply to all (supported) languages). But before I go into a bit more details for each service, let me summarize what “the cloud” actually means when it comes to hosting your applications:

  • auto-scaling – if there is an increased demand, you automatically get more resources (more virtual machines in most cases) to handle the requests. For the regular application this is rarely useful, but it’s nice to have it and be sure that your service never dies because the load is too high

  • pay what you use – simply put, this is in fact the option to choose small servers when you are small, and bigger servers when you are big. The “cloudy” thing here is that you can do that easily, rather than reconfiguring some remote machines

  • cloud infrastructure – this is fancy talk for “we deploy these services and take care that they are working”. So instead of installing and configuring a message queue on your machines, you hook up to an already installed and managed message queue. Or database, email service, or cache.

  • management tools – you get consoles, command-line tools and web UIs for handling your installations. This is both a plus (the tools are higher level than working with native commands), and a minus (there’s a learning curve)

  • load balancers – all services offer these, and you rarely care what’s the software and hardware of the load balancer

The overall plus is the ease of use – you need way less system administration knowledge, and even if you have it, you need to do much less in order to have a real-world-ready application. It is not necessarily cheaper than regular servers (actually, it might be more expensive). But let’s see what each service does:

Amazon Web Services (AWS). This is the most popular option.

  • General flow: you create an EC2 instance, which is a virtual machines, ssh to it and have full control. You can bring up and kill copies of your instance whenever there’s higher load.

  • Flexibility: since you have root control over your machine, it is very flexible.

  • Usability: the AWS console and the Elastic Beanstalk give you very nice UI for managing applications. With Beanstalk you can deploy applications without even opening a console, just drop a war file. In reality you will at least need to provide some configuration though. The best thing is having predefined instance images, so you can have “Tomcat with MySQL” up and running within a minute. There are already nice solutions built ontop of the Amazon API, like RightScale.

  • Features: in addition to the basic instance functionality, you have a lot of extras – managed database, elastic IPs, DNS, cloud storage, CDN, mail service, message queue, cache (this one is not that good, btw), etc. So instead of installing and managing these services on your instances, you can use the Amazon versions.

  • Pricing – you are charged for the number of hours your instances are running

  • Trial: yes, 1 year (a micro instance).

Google App Engine (GAE). This is a PaaS (Platform as a Service), so you don’t get your own virtual machines and are limited in the use of some standard APIs (for example, you can’t spawn threads), and you can’t use a file system (you need the Blobstore API instead)

  • General flow: you create an application and deploy it (through command line or IDE plugin). You don’t manage servers and you don’t have ssh – you have just the app. The app runs in a sandbox, and you may need to use some proprietary APIs in order to store to a NoSQL store, use MapReduce, etc. You have less control. You can browse the datastore, view log files and performance metrics via the admin UI, as you don’t have regular access to the target “machine”

  • Flexibility: low – you deploy to a sandbox. You are limited to the configurations the admin UI offers you

  • Usability: the admin UI is OK (not perfect, but I can’t say something bad)

  • Features: fewer extras, but still good ones – email, datastore, task queue, memcached, etc.

  • Pricing – generally, you are charged for the amount of resources you are consuming

  • Trial: yes, its is free as long as you use small amount of resources

Windows Azure. You get virtual machines, you can use remote desktop / ssh to administer them.

  • General flow: you create a virtual machine and that’s it (similar to AWS). You can also deploy simple web sites using php, asp or node.js (which is PaaS, similar to GAE)

  • Flexibility: high for the VM, low for the PaaS

  • Usability: the admin UI is OK

  • Features: caching, database, service bus

  • Pricing – fine-grained, pay-as-you-go or prepaid plans

  • Trial: yes, 2 months (the smallest virtual machine)

Heroku. Platform as a Service – you deploy an app in a sandbox and have a lot of useful add-ons for other services. You have two types of “dyno” – one that services web requests, and one that services background requests.

  • General flow: you download the heroku toolbelt, run it (the latest version fails on Windows though – it installs ruby 1.9.2 and requires 1.9.3, so you have to edit the bat file) and then use it to create and deploy applications

  • Flexibility: low, because you run in a sandbox, but each add-on is configurable and there are a lot of add-ons, so it’s better than other PaaS options. The bad news for Java developers is that it only supports deployment by checking out from git, and building with maven. No other version control system or build tool. (there is hg-git adapter, which you can try if using mercurial, but it starts getting hacky)

  • Usability: there is a need for command-line work, which is not that usable. The web UI is OK.

  • Features: most of the things you can imagine are available as add-ons

  • Pricing – you pay per dyno, per database and per add-on (if paid)

  • Trial: yes, you get 750 hours monthly for free – this means you get it for free if you have low usage

Jelastic. Platform as a Service for Java only – you deploy an app in a sandbox. You can configure the architecture and use various 3rd party services. It’s not as popular as the other services, but I got an app running quickly (with some useful input from their support)

  • General flow: you create an application, choose an architecture via a nice UI (it’s reconfigurable later), and then deploy your war file. You configure the maximum number of servers that you want your application to use. Everything is configured with the web UI

  • Flexibility: low, because you can’t ssh to the machine. However, you are free to edit some application server configurations and have a limited, but sufficient access to the file system, you also can configure each of the additional services you use (databases, for example)

  • Usability: the interface is pretty good (I’d say better than the rest)

  • Features: you can use additional services – MySQL, MongoDB, CouchDB, memcached, building with maven. (The list is way smaller than what Heroku offers)

  • Pricing – you pay per application server instance and per additional service (MySQL, SSL, load balancer, etc.)

  • Trial: yes but just 2 weeks

There are many other options, notable RackSpace, which is a traditional hosting company, and the cloud options are simply virtual machines with some “cloudy” features, like auto-scaling. I listed only the popular options that I’ve actually tried (I’ve used AWS, GAE extensively, and deployed sample applications on the other three). The evaluation above does not aim to be complete, and I’ve certainly missed some points here and there.

There’s no “winner” – use different options for different scenarios. But it’s good to know what limitations are imposed by each service, and what’s the approach and general mindset. Because, especially with platforms like Heroku and GAE, you need to change the way you think about deployment.

**Disclosure: I am a real user, and this review is based on my own experience and opinions.
More Heroku reviews from users
Find out what your peers are saying about Heroku, Microsoft, Google and others in PaaS Clouds. Updated: June 2021.
513,091 professionals have used our research since 2012.
Add a Comment
ITCS user

author avatarit_user10467 (Marketing with 51-200 employees)

Thanks for the kind mention of Jelastic. FYI we actually support Java and PHP apps. PHP support was introduced earlier this year :)

author avatarit_user82776 (Chief Executive Officer at a tech services company with 1,001-5,000 employees)
Top 20Consultant

The Cloud is actually changing the way people and enterprises use IT. We see a rapid trend and development of Cloud services both managed and solution based offered on a wide variety of platforms that will suit both companies and their clients.

author avatarit_user105252 (CTO at a healthcare company with 51-200 employees)

>>Windows Azure. You get virtual machines, you can use remote desktop / ssh to administer them.

•General flow: you create a virtual machine and that’s it (similar to AWS).

HUH? the big thing about Azure is that it was focused initially only on PaaS. It has the most comprehensive set of PaaS services out there.

so if you want to build for a future environment rather than just do "VMs in the cloud".... Azure, GAE, Heroku and Jelastic are your only options. GAE is more limited than Azure
Heroku is a smaller and less reliable footprint than Azure or GAE - and has much more limited service capabilities in comparison to Azure (many of unknown reliability)
Jelastc is PaaS... kindof. you are still dealing with full server instances of thiings like the DB, you don't have things like Amazon's Simple Server Storage or Azure's messaging bus

lastly AWS actually does offer PaaS. its called Elastic Beanstalk and runs on Tomcat based app instances. But it is much newer than AWS or GAE

author avatarit_user105252 (CTO at a healthcare company with 51-200 employees)

BTW here's the link to Elastic Beanstalk PaaS http://aws.amazon.com/elasticbeanstalk/

author avatarit_user10467 (Marketing with 51-200 employees)

Good news, Jelastic now supports production-ready Docker containers, SSH access, .NET, Ruby, Node.JS, Python and of course PHP and Java.

author avatarit_user232497 (Americas Cloud Ecosystem & Partnerships at a tech company with 10,001+ employees)

All... might be useful to update as many of these details are now invalid.