The King's Museum

ソフトウェアエンジニアのブログ。

Codebase - The Twelve-Factor App

12 Factor App シリーズ。最初はコードの管理について。

Codebase: The Twelve-Factor App

バージョン管理システム

12 Factor App は常に Version Control System で変更をトラックしています。 このリビジョンのデータベースは Code Repository と呼ばれ、単に Repo と呼ばれることもあります。

Codebase は一つの Repo に相当し、Codebase と app は1対1の関係を持ちます。

もし、複数の Codebase を持つのであればそれはもはや一つの app ではありません。 それはなんらかの分散システムとなります。

ただし、分散システムを構成する一つ一つのコンポーネントは app として扱うことができ、それら一つ一つは 12 Factor App に適合することができます。

複数の app が同じソースコードを共有していることは 12 Factor App 違反です。 その場合、共通のコードをライブラリとして切り出し、依存関係を管理するようにするべきです。

複数の deploy

一つの Codebase が一つの app である一方、一つの Codebase に対して複数の deploy は可能です。 この場合、deploy は app が動作する一つのインスタンスだと考えます。

deploy には production や staging 環境などが考えられます。また、ローカル環境での開発も deploy の一つだと考えることができます。

Codebase は app と1対1てあるため、すべての deploy において Codebase は同一である必要があります。しかし、それらで違うリビジョンがデプロイされることはありえるでしょう。

(c) The King's Museum