アプリケーションのソフトウエアアーキテクチャを考えるうえで、非常に重要な点なので、めもめも…
- I. コードベース
- バージョン管理されている1つのコードベースと複数のデプロイ
- II. 依存関係
- 依存関係を明示的に宣言し分離する
- III. 設定
- 設定を環境変数に格納する
- IV. バックエンドサービス
- バックエンドサービスをアタッチされたリソースとして扱う
- V. ビルド、リリース、実行
- ビルド、リリース、実行の3つのステージを厳密に分離する
- VI. プロセス
- アプリケーションを1つもしくは複数のステートレスなプロセスとして実行する
- VII. ポートバインディング
- ポートバインディングを通してサービスを公開する
- VIII. 並行性
- プロセスモデルによってスケールアウトする
- IX. 廃棄容易性
- 高速な起動とグレースフルシャットダウンで堅牢性を最大化する
- X. 開発/本番一致
- 開発、ステージング、本番環境をできるだけ一致させた状態を保つ
- XI. ログ
- ログをイベントストリームとして扱う
- XII. 管理プロセス
- 管理タスクを1回限りのプロセスとして実行する