Twelve-Factor App

Twelve-Factor Appは、次のようなSoftware as a Serviceを作り上げるための方法論である。

  • セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコストを最小化する。
  • 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。
  • モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー管理やシステム管理を不要なものにする。
  • 開発環境と本番環境の 差異を最小限 にし、アジリティを最大化する 継続的デプロイ を可能にする。
  • ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく スケールアップ できる。

The Twelve Factors

I. コードベース

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

II. 依存関係

依存関係を明示的に宣言し分離する

III. 設定

設定を環境変数に格納する

IV. バックエンドサービス

バックエンドサービスをアタッチされたリソースとして扱う

V. ビルド、リリース、実行

ビルド、リリース、実行の3つのステージを厳密に分離する

VI. プロセス

アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する

VII. ポートバインディング

ポートバインディングを通してサービスを公開する

VIII. 並行性

プロセスモデルによってスケールアウトする

IX. 廃棄容易性

高速な起動とグレースフルシャットダウンで堅牢性を最大化する

X. 開発/本番一致

開発、ステージング、本番環境をできるだけ一致させた状態を保つ

XI. ログ

ログをイベントストリームとして扱う

XII. 管理プロセス

管理タスクを1回限りのプロセスとして実行する