Hacker News new | ask | show | jobs
by gregwebs 5077 days ago
what are the differences/advantages/drawbacks between a buildpack and an automated deploy script that installs OS packages?

What happens in an environment where you have multiple applications with different but overlapping dependencies?

2 comments

buildpacks are designed to work when you have one system/container per application. The goal is to produce an image that can easily be distributed to the auto-scaler and associated with the reference OS to provide application processes. The images are mounted read-only and no guarantee is made on the process lifetime. This limits the class of applications to ones who don't keep state internally or on the filesystem.

automated scripts like Chef / Puppet are designed to keep a system in a predictable state according to some code+data specification. It's not a guarantee though as things not specified by the scripts can have any state. They're more useful to maintain an heterogenous park of machines, systems that want to keep state on the disk like databases or even configure the underlying system that will run the buildpack containers.

that's how i see it but notice that there are some similarities. it could be possible to use chef to pre-configure a system image as a "buildpack", or to add some disk storage to buildpacks. although both not on heroku obviously.

My guess is that it depends on the buildpack. The Python one wraps everything nicely in a virtual environment.

If my information is correct Heroku is using Linux containers to keep everything nice and sperate.