I. コードベース

バージョン管理されている1つのコードベースと複数のデプロイ

Twelve-Factor AppはGitMercurialSubversionなどのバージョン管理システムで常に変更を追跡している。リビジョン追跡データベースのコピーは コードリポジトリ と言われ、単に リポジトリ とも言われる。

コードベース は、単一のリポジトリ(Subversionのような集中バージョン管理システムの場合)またはルートコミットを共有する複数のリポジトリ(Gitのような分散バージョン管理システムの場合)である。

1つのコードベースは複数のデプロイにマッピングされる

コードベースとアプリケーションの間には、常に1対1の関係がある。

アプリケーションごとにただ1つのコードベースが存在するが、アプリケーションのデプロイは複数存在する。 デプロイ はアプリケーションの実行中のインスタンスである。これは通常1つの本番サイトと、1つ以上のステージングサイトである。さらにすべての開発者はローカル開発環境で動作するアプリケーションのコピーを持っており、それらもデプロイと見なせる。

デプロイごとに異なるバージョンがアクティブであるかもしれないが、コードベースはすべてのデプロイを通して同一である。例えば、開発者はステージング環境にまだデプロイされていないコミットを抱えているし、ステージング環境には本番環境にデプロイされていないコミットが含まれている。しかし、これらのデプロイはすべて同一のコードベースを共有しているため、同一のアプリケーションの異なるデプロイであると認識できる。