Though I used Heroku in the past and enjoyed the seamless(mostly) experience, I am in the process of moving my infrastructure to docker containers.
I dislike the proprietary nature of Heroku platform and I am betting on Docker + Flynn/Deis as a future golden standard of PaaS. My confidence is based on the momentum of Docker and Docker hosting services (orchardup, tutum, stackdock) as evidenced by their funding/acquisitions and tech news hype. Also digitalocean, linode and other VPS provders have easy to install docker images.
I am enjoying (probably false) confidence that investing now in the docker expertise, I will have my development and deployment strategies mostly set for next 3-5 years. Rvm, virtualenv, haskell platform, etc - everyting becomes easier with docker to develop AND to deploy. Heroku doesn't solve that. New services and products would be adopted by decentralized docker ecosystem faster than by Heroku.
This feels really nice.
Am I wrong to bet on docker? Should I return back to the the poisoned fruits of Heroku walled garden or venture forth in the great ocean with Docker? Is there a consensus in HN community?
> I dislike the proprietary nature of Heroku platform
Most everything we do, we open source. For example I help maintain the Heroku Ruby Buildpack, and it is fully open source. This is the technology that allows us to detect and install dependencies and precompile your assets. We open source a ton of other things such as our CLI, our logging aggregation infrastructure, our continuous Postgres backup service (backs up postgres to S3). We also invest heavily in Open source, we support PostgreSQL development, and we hired the 3 most prominent Ruby Core developers so they can work on the language full time.
Under the hood, we use LXC a standard linux container. We generally don't talk about this level much because it's orthogonal to the running of your application. Most people don't know what system libraries come pre-installed on our servers, or the versions of the operating systems, or what virtualization/containment systems we use. They know their app runs, and stays running.
I'm happy you're comparing and contrasting. I think docker is a great technology like LXC and it's very useful. I wanted to chime in on the "proprietary" comment because if you feel our service ever "locks you in" in some way, it's likely a bug that needs to be fixed. I consider my work 100% open source time.
Am I wrong to bet on docker? Should I return back to the the poisoned fruits of Heroku walled garden or venture forth in the great ocean with Docker?
I'm a huge Docker fan, and I think Docker is probably a decent medium-term bet at this point (with very real short-term issues). But I also think it's a bit unfair to call Heroku a "walled garden":
- Heroku buildpacks rarely require modifying your application much. Typically, you just add a two-line Procfile and maybe a list of libraries you depend on.
- When Heroku does invent something propriety like a Procfile, they usually release an open source library to allow other people to use it.
- Heroku uses standard storage infrastructure: PostgreSQL, memcached, and so. Unlike Google and Amazon, they don't actually provide many propriety cloud APIs.
As somebody who's worked on Heroku-based projects ranging from throwaway hacks to huge production systems, I've never had the impression that Heroku was trying to lock me in.
Okay, but what is the Heroku's endgame here? Their dynos are way overpriced and migrating from Heroku to Docker infrastructure(or other PaaS/IaaS combination) on the scaling stage of startup lifecycle could save $x0 000 and $x00 000 per month for resource intensive apps. Do they want startups migrating as soon as they start scaling? I don't think so.
They definitely have some lock-in strategies in the works. Lock in may be not technological per se, but a behavioural one, like in a Github to git network effect. That "Deploy" button is one clear path to lock-in.
But I agree, Docker ecosystem is not mature enough and doesn't have its own killer app, platfrom or collaboration process. Though with the acyclic directed graph model of building containers they may have stumbled onto something really big.
I can say with 100% confidence that it's really exciting to observe the evolution of the hosting industry and the overlapping between production and development environments.
"Do they want startups migrating as soon as they start scaling?"
Actually, I do think they want most startups to migrate as they scale up. Heroku does not want to compete with AWS; their story is value-add. Their pricing will always be non-competitive for larger apps and larger apps will be migrating away anyway.
So rather than fight it, they embrace it. By making migration easy they make their service much more attractive to the little guys.
After all, everybody expects that their little app is going to grow huge one day. Heroku makes their money from the large majority that haven't gotten huge yet and probably never will.
But consider that with an advent of golang, node.js and other faster (compared to python and ruby) languages/frameworks coupled with microservices architecture most (maybe 80%) startups will not exceed 10 or 15 free dynos. Those who need vertical scaling may pay for 2 or 3 dyno workers.
Where's the scalable business model for Heroku in this scenario? So I am not sure that Heroku wants startups to migrate.
> My confidence is based on the momentum of Docker and Docker hosting services (orchardup, tutum, stackdock)
Orchardup was acquihired because of an open source tool they hacked and they are discontinuing their hosting service.
Tutum has no SLA at all and explicitly recommends only using their service for toy products. Basically, they're not a real hosting provider right now, just a very expensive toy.
Stackdock has been "currently upgrading our platform and sign-up has been temporarily disabled" for months now. I'm wondering what's going on, but I wouldn't be surprised if blocking new signups for such a long time means they're about to pull the plug, for whatever weird reason. So long without new customers (while I'm sure some are leaving) can't be healthy. I really want to give them money but I can't.
Finally, the people who made Docker itself once ran a PaaS service, dotCloud. It has been sold off and does not seem to be getting much new investment - definitely not any support for directly hosting Docker containers.
In short, there are currently 0 real Docker container hosting providers (and by 'real' I mean that they will exist past October and have at least some uptime guarantees).
I really want you to be right, but currently the evidence looks very bleak IMO.
We made this same bet last January and we're currently spending way too much effort DIY'ing it all on a VPS.
I wouldn't say it's bleak. The next version of Red Hat's PaaS is based on docker containers.
"The OpenShift v3 Cartridge format will adopt the Docker packaging model and enable users to leverage any application component packaged as a Docker image. This will enable developers to tap into the Docker Hub community to both access and share container images to use in OpenShift."
However, Orchardup was acquihired by Docker itself and I am sure they are planning to provide container hosting.
Tutum has just raised about $2M and are in the process of going gold with their service.
Yeah, stackdock is MIA.
However, the main point is that Docker is quite young and already has a developed ecosystem. Also all of these are specialized docker container providers, while I have no problems deploying a container on most VPS providers, IaaS platforms or even bare metal.
The Docker ecosystem is just starting to develop, Docker PaaS platforms are still in beta and while there is a lot of uncertainty, the vitals of the ecosystem look good. I may be wrong, but I am taking the plunge and my efforts will contribute a small part to the Docker ecosystem.
We have no interest in providing container hosting. We acquired Orchard for the great people doing amazing things in the ecosystem so they could continue their work on Fig in the context of Docker.
AWS Beanstalk for docker does work, but has some weaker points of relative comparison:
* inefficient - 1 docker image per AWS instance, which is expensive to run scaled up compared to running many containers per host
* slow - requires starting a VM which typically takes several minutes
* feature-bare - compared with PaaS platforms like heroku, cloud foundry, openshift, etc. for example, both heroku and cloud foundry have built-in aggregated logging and health management.
there is going to be a large spectrum of ways to run docker images, and you'll be able to choose bare bones to full-service.
here is a 4min video of cloud foundry next generation runtime diego showing spinning up 300 docker images in under a minute, providing load balancing, health management and aggregated logging: http://www.youtube.com/watch?v=e76a50ZgzxM
Heroku PaaS itself is proprietary. Their dashboard, monitoring and other tools are proprietary.
PaaS services based on open source PaaS solutions (Deis + Docker, Flynn + Docker) and proprietary PaaS solutions ( Tutum + Docker, for example) will look after my infrastructure. Or I will host it myself. In any case I'll be able to migrate my containers to any other infrastructure easily, quickly and with nearly zero additional configuration.
Anytime I've investigated Docker it's seemed more like something that someone who wanted to build a Heroku competitor would use as an underlying aspect of their infrastructure than something I (as a developer who wanted to minimize dealing with sysadmin tasks would use).
I think Docker really awesome to deploy app. However, I am not sure how to deploy DB to Docker to persist data to disk. Currently I am not really impress Heroku's app deployment, but I like their PostgreSQL offering (which quite expensive).
I dislike the proprietary nature of Heroku platform and I am betting on Docker + Flynn/Deis as a future golden standard of PaaS. My confidence is based on the momentum of Docker and Docker hosting services (orchardup, tutum, stackdock) as evidenced by their funding/acquisitions and tech news hype. Also digitalocean, linode and other VPS provders have easy to install docker images.
I am enjoying (probably false) confidence that investing now in the docker expertise, I will have my development and deployment strategies mostly set for next 3-5 years. Rvm, virtualenv, haskell platform, etc - everyting becomes easier with docker to develop AND to deploy. Heroku doesn't solve that. New services and products would be adopted by decentralized docker ecosystem faster than by Heroku.
This feels really nice.
Am I wrong to bet on docker? Should I return back to the the poisoned fruits of Heroku walled garden or venture forth in the great ocean with Docker? Is there a consensus in HN community?