the twelve factor app をみてみた

どうやったら全体の開発最適できるか考える必要があって、有名とのことだったので読んでみたメモ

 

だが、

とにかく分かりづらいTwelve-Factor Appの解説を試みる

こちらがとても分かり易かった。

 

 

一応まとめたので、メモ

https://12factor.net/ja

 

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時に、環境によって変数が違う部分をまずなんとかしなきゃいけない...