|Languages||Python, NodeJS, Ruby, Java, Go, PHP, Scala, Clojure||Python|
|Pricing||Free, $7-$500||Free, $5-$500|
|Billing||Per Dyno per Month||Fixed Monthly|
|Free Plan||512MB RAM, 1 web/1 worker dyno||512MB RAM, 100 CPU seconds|
|Database||PostgreSQL (default), MySQL MongoDB Redis (with plugins)||MySQL (default), PostgreSQL (paid)|
Heroku provides a PaaS architecture (Platform as a Service), with support for many programming languages. The free account offers 1 web and 1 worker dyno (What is a Dyno?). The apps running on free dynos sleep after 30 minutes of inactivity, and it takes about 15 seconds to wake up a sleeping app on the first request. Each account has 500 hours of free dynos per month to use for a maximum of 5 apps, but the account can be verified with a credit card to increase the limit to 1000 hours per month and 100 apps. This is more than enough to run one app for the entire month. Verification also allows custom domains to be added to apps. All Heroku subdomains have SSL Certificates for HTTPS connections, but custom domains on the free account don’t. Any paid account however has support for SSL certificates with auto renewal.
Heroku creates apps directly from you version control (Git), by adding another remote link to the app. Heroku CLI can be used to create apps, add plugins and run database queries easily.
- The Ephemeral Filesystem does not allow writing to the local filesystem, thus all changes to be made are done via the version control system
- Can be too expensive for large projects
Pythonanywhere is like a traditional hosting platform, where you can create apps using the inbuilt file manager or by pulling from a Git repository. It has many more features like IPython notebooks (for paid accounts) and shared consoles.
The free account does not sleep like in Heroku, but I have noticed that it is a bit slower than heroku (non - sleeping apps). It has limited CPU cycles for running comands in the online console. Free accounts cannot have custom domains for apps, and all Pythonanywhere subdomains have SSL Certificates for HTTPS connections.
- Very easy to use
- Competitive, low prices
- Shared Consoles
- You have to git-pull in the Pythonanywhere console to update changes
Both Heroku and Pythonanywhere have their pros and cons, and differ mainly in their architecture. Heroku has a slight learning curve and guidelines have to be followed for language specific builds, whereas Pythonanywhere is relatively simple.
For simplicity in learning and deployment, and for teachers (IPython notebooks, Shared consoles) we recommend Pythonanywhere. For quick buiding and deployment, and for adding various plugins (NoSQL databases, Logging, Caching) we recommend Heroku.