Twelve-Factor Appは、次のようなSoftware as a Serviceを作り上げるための方法論である。
- セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコストを最小化する。
- 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。
- モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。
- 開発環境と本番環境の 差異を最小限 にし、アジリティを最大化する 継続的デプロイ を可能にする。
- ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく スケールアップ できる。
The Twelve Factors
バージョン管理されている1つのコードベースと複数のデプロイ
依存関係を明示的に宣言し分離する
設定を環境変数に格納する
バックエンドサービスをアタッチされたリソースとして扱う
ビルド、リリース、実行の3つのステージを厳密に分離する
アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する
ポートバインディングを通してサービスを公開する
プロセスモデルによってスケールアウトする
高速な起動とグレースフルシャットダウンで堅牢性を最大化する
開発、ステージング、本番環境をできるだけ一致させた状態を保つ
ログをイベントストリームとして扱う
管理タスクを1回限りのプロセスとして実行する