4 ms·
Heroku is a PaaS offering that offers its key value in that it provides a simple environment that caters to a lot of workloads. The way it does this is make man
by jlawer 11y ago
Heroku is a PaaS offering that offers its key value in that it provides a simple environment that caters to a lot of workloads. The way it does this is make many decisions for you. If your workload don't suit those decisions they may be sub-optimal. However the value is that your given limited sizing options, rather then having to decide amongst the millions of configuration options you would have with AWS or dedicated hosting. However you follow the Heroku documentation properly and you should be able to have a fairly performant solution.
Docker is containerisation. It allows you to run many containers on a single server. It can be configured in millions of ways, and part of a much larger stack. All it does is handles a small number of problems associated with running multiple applications on a single server (and the surrounding problem space). You can use whatever programming language / database / messaging stack / middleware / web server / etc you like, with the caveat that you need to either build the configuration (or use someones pre-configured image).
So the answer to your question really is why would someone need more flexibility then heroku offers, in which I can think of :
1.) Hosting outside of EU / US. Heroku does not have APAC / South America / African hosting at least according to documentation. https://devcenter.heroku.com/articles/regions https://devcenter.heroku.com/articles/regions
2.) Use of technology component not provided by Heroku. (Programming Language / Database / etc)
3.) Add-ons may not be suitable to provide key technology. (I really am uncomfortable with a Database being far away from application code, so a Database as a service makes me nervous, like Heroku Add ons). Heroku only provide Postgres and Redis.
4.) Each Application is a separate Heroku line item. A docker configuration could host thousands of rarely accessed applications. Outside of storage there is little resource costs for a rarely-used application.
5.) Ability to move. A docker container can be moved to anywhere. You want to host on Azure, you can. Rackspace offering something cheap, go there. AWS, your good. Get acquired and need to run in a corp VMWare environment... your good. Heroku apps tend to get tied into the platform as you deal with herokuisms and work around that environment. While the application can be moved, if your application is significant you will spend time re-ballancing.