Heroku の自動ビルドシステムを使用すると、ビルドプロセスがシームレスかつ迅速なものに変わります。Heroku でアプリをデプロイするために開発者が用意しなければならないものは、ソースコード、依存関係ファイルのリスト、「Procfile」(コードの実行を開始するためのコマンドを指定したテキストファイル)の 3 つのみです。ビルドシステムはソースコード、依存関係ファイル、言語ランタイムを受け取ると「スラッグ」を作成します。スラッグにはオペレーティングシステムを除き、アプリの実行に必要なものがすべて含まれています。
Heroku は 1 つまたは複数の dyno にスラッグをデプロイし、Procfile で指定されているコマンドを呼び出すことによってアプリを起動します。
Heroku は 8 種類の言語を強力にサポートするだけでなく、それ以外の言語もサポートできる拡張可能なビルドシステムを備えた多言語対応プラットフォームです。ビルドシステムには各言語に適したアセットが読み込まれます。たとえば、Go で書かれたアプリの場合は、コンパイル済みの Go バイナリがスラッグに追加されます。Ruby でデプロイされたアプリの場合は、Ruby コード、gemfile 依存関係ファイル、Ruby ランタイムがスラッグに追加されます。
Heroku ビルドパック を使用すると、Heroku のビルドシステムで他の言語をサポートしたり、カスタマイズしたりすることが可能になります。
アプリの実行に必要な最後のコンポーネントはオペレーティングシステムです。Heroku ではこれを "stack"と呼んでいます。スタックは Heroku により管理されているオペレーティングシステムイメージであり、Ubuntu(オープンソースの Linux システム)をベースとしています。