今回は、Cloud Nativeなプロジェクトで最近利用されつつあるBuildpacksについて、簡単な紹介します。

Buildpacksとは?

最近のアプリケーションの実行環境として、Docker等のコンテナが利用されるようになりました。ある程度の規模になるとDockerfile等のコンテナ作成方法についての記述もノウハウがあり色々手間がかかるようになっています。Buildpacksは、このDockerfile等を利用せずにアプリケーションのソースコードを解析して、稼働するための実行環境を備えたコンテナイメージを生成してくれるツールです。

Buildpacksのしくみ

BuildpacksはBuilderと呼ばれるアプリケーションのビルド方法にすべての情報を保持してているものからなり、Buildpack、Lifecycle、Stackの3つのコンポーネントからなります。

Buildpackは、アプリケーションのソースコードを解析して、ビルド・実行を行うための一連の作業単位です。Builderは、複数のBuildpackを持つことができます。具体的には、下記のことを行います。

  • 検出: ソースコードを検査して、仕様するbuildpackの選択
  • 分析: 既存のイメージを解析して、変換点を把握
  • ビルド: Buildpackを使用してビルド実行して、コンテナ化できる実行可能なバイナリに変換する
  • エクスポート: コンテナイメージの生成

Lifecycleは、Buildpackの実行を管理し、ビルド結果で得られてバイナリファイルをコンテナイメージを構築する役割があります。

Stackは、Lifecycleに対してビルドやランタイム環境を構築して、イメージの形で提供します。

Googleも2020年10月にGoogle Cloud Buildpacksを出しています。アプリケーションコードの開発のみに力を注げる時代ももうすぐやってきそうですねー。