the twelve factor app をみてみた
どうやったら全体の開発最適できるか考える必要があって、有名とのことだったので読んでみたメモ
だが、
とにかく分かりづらいTwelve-Factor Appの解説を試みる
こちらがとても分かり易かった。
一応まとめたので、メモ
1. コードベース
1アプリケーションは、1レポジトリにしよう!
2. 依存関係
bundler とか使って、ライブラリの依存関係を明示しよう
3. 設定
デプロイ毎に違う設定は環境変数に入れておこう。
config/setting.yml とかに入れたら基本ダメっぽい。
4. バックエンドサービス
DBとかストレージサービスは、本体のサービスと疎結合であるべき
5. ビルド、リリース、実行
上記3ステージは、分けられるべき。
6. プロセス
ステートレスなプロセスとして実行し、メモリやディスクが将来使えるということを仮定しない。
セッションとか使いたいなら、Redisとかにデータを格納すべき。
7. ポートバインディング
それぞれのアプリケーションは、WEBに公開できるために、HTTPをサービスとして公開して、ポートにリクエストが来るようにする。
8. 並行性
スケールアップする際は、複数台立ち上げればOKってすること
9. 廃棄容易性
簡単にデプロイと、停止できるようにしよう!
10. 開発 / 本番一致
開発環境と本番環境のギャップを小さく保とう。
開発環境でビルド完了 = そのビルドしたもので本番反映できるみたいにする。
11. ログ
ログは標準出力に吐き出す
12. 管理プロセス
infracture as code 的な感じ?
今自分が作ってるアプリケーションは、テスト環境、本番環境でどっちもビルドしてるので、さっさとDocker環境に持っていって、Docker build時に、npm build して、コンパイルされたイメージを、クラウドに持って行って、それをそのままスタートするって感じにしたいなー。
となると、build時に、環境によって変数が違う部分をまずなんとかしなきゃいけない...