🔑
12 factor app
12 factor app
こんにちは!ビクトルです!
今回はdevopsでSaaSを開発する技術について話したいと思っています。
アプリを開発するときに始めてのcommitから本番でデプロイするまで悩んでることが多い気がしていると思います。
それで、12 factor app
のルールについて話しにいきましょ~
1. Codebase
コードは一箇所にまとめておくべきです。たとえば、GitHub。そして、デプロイのために一個以上にpipelineを用意するべきです。。
2. Dependencies
アプリの依存関係を一箇所にまとめ、管理をしやすくしてください。
3. Config
アプリの変数は環境変数に設定を保存し、どこでも開発環境で更新して利用されます。
4. Backing services
もしアプリケーションが statefullであれば、データを管理するためのデータベースなどを作成してください。それともキャッシュやqueueなど。
5. Build, release, run
デプロイミスを減らすためにコードのビルドpipelineとデプロイpipelineを分けてください。
6. Processes
アプリはstatelessであり、データがデータベースに保存してください。もしdiskやメモリをあまり使わないでください。
7. Port binding
アプリはポートをつけて開発環境で公開してください。
8. Concurrency
プロセスリクエストを処理できるようにスケールする必要があり、環境内では並列で実行されます。
9. Disposability
アプリは実行開始を早くしてシャットダウンするときアプリと連携してるサービスをゆっくりしてください。
10. Dev/prod parity
dev環境と本番環境と一緒にしてください。
11. Logs
ログ分析のためにログイベントをしてください。
12. Admin processes
データベースマイグレーションやタスクなどどこでもの環境に同じ結果にしてください。
参考
Discussion