サーバーアプリケーションの開発において The Twelve-Factor App という考え方があるのをつい最近知った(いまさら感がすごい)。
勉強がてら記事にしておこうと思う。
まずは Twelve-Factor App の Introduction と Background から・・・
The Twelve-Factor App
INTRODUCTION
The Twelve-Factor app は「サービスとしてのソフトウェア(software-as-a-service)」を構築するための方法論です。
サービスとしてのソフトウェアは次のような特徴を持ちます。
- プロジェクトに新たに参加する開発者のコストを最小化するため、セットアップ自動化には宣言的なフォーマットを使う
- OS への依存関係を明確化し、実行環境に関して最大限のポータビリティを提供する
- サーバーやシステム管理の必要性を事前に省くために、モダンなクラウドプラットフォームへのデプロイを最適化する
- 最大限の機敏性をもつ CI のために、開発環境とプロダクション環境の差違を最小化する
- ツール、アーキテクチャ、開発プラクティスに大きな変更を加えることなしにスケールできる
どのような言語で書かれていても、どのようなバックエンドサービスとの組み合わせでも問題ありません。
BACKGROUND
このドキュメントの起草者は直接的、または間接的にさまざまなアプリケーションの開発やオペレーションを目にしてきました。
そこで目にした問題を提起し議論するために共通の語彙を与え、問題を解決するための概念的な解決策を提示するることがこのドキュメントの目的です。
感想
Introduction と Background はそんなに大したこと書いてないと思った。
じゃあ、どうやってこれらを実現していくか、っていうのが大事なわけで、それを説明したこのあとの12個の Practice がこのドキュメントの面白いところだと思う。
ここ数ヶ月 Docker 関連でサーバーサイドをいじっているが、自分なりに「こういう方法論で作るのがベストなんじゃないかな」と思っていることが、そのまま出てきたりしたので、もっと早くに出会っていれば、、、と思った。