【とぅえるぶふぁくたーあっぷ】

Twelve-Factor App とは?

最終更新:
💡 クラウド時代のアプリ設計「12の原則」

Webアプリ(SaaS)を、クラウドで動かしやすく保守しやすく作るための12の原則。Herokuでの運用経験をもとに、共同創業者のAdam Wigginsがまとめた。

📌 このページのポイント
Twelve-Factor Appの12原則 I コードベース II 依存関係 III 設定 IV バックサービス V ビルド/リリース/実行 VI プロセス VII ポートバインディング VIII 並行性 IX 廃棄容易性 X 開発/本番一致 XI ログ XII 管理プロセス 開発 設定 デプロイ 実行 運用 クラウドネイティブアプリのためのベストプラクティス集
Twelve-Factor Appはクラウド時代のアプリ開発で守るべき12の原則をまとめたもの
ひよこ ひよこ
Twelve-Factorって何のための12個なの?
ペンギン先生 ペンギン先生
Webアプリを「クラウドで動かしやすく、保守しやすく」作るための12の原則だよ。コードベース、依存関係、設定、バックエンドサービス、ビルド・リリース・実行、プロセス、ポートバインディング、並行性、廃棄容易性、開発/本番一致、ログ、管理プロセスの12個なんだ
ひよこ ひよこ
設定を環境変数にするって何がいいの?
ペンギン先生 ペンギン先生
データベースの接続先やAPIキーをコードに書くと、本番・ステージング・開発で切り替えるたびにコードを変えることになるよね。環境変数にすれば同じコードのまま環境ごとに設定を変えられる。原典では「今すぐコードを公開しても認証情報が漏れないか」を確かめの目安にしているよ
ひよこ ひよこ
ステートレスなプロセスって何?
ペンギン先生 ペンギン先生
プロセスのメモリやローカルディスクに「次のリクエストでも必要なデータ」を置かないことだよ。残す必要のあるデータはデータベースなどの外部サービスに保存するんだ。セッションも、同じサーバーに振り分け続ける方式に頼らず、Redisのような期限付きの保存先に置くよう勧めているよ。こうするとプロセスを増やしたり再起動したりしやすくなるんだ
ひよこ ひよこ
ログを標準出力に流すのはなぜ?
ペンギン先生 ペンギン先生
アプリが自分でログファイルの置き場所や切り替えを管理しないためだよ。アプリは標準出力に書くだけにして、集めて保存するのは実行環境に任せる。Kubernetesなどのコンテナ環境も、コンテナが標準出力・標準エラーに書いたログを集める仕組みを持っているから、相性がいいんだ
ひよこ ひよこ
2011年の原則って古くない?今でも使えるの?
ペンギン先生 ペンギン先生
基本の考え方は今も役立つけど、コンテナが広まる前に書かれたものだから、そのままでは足りない部分もあるよ。2024年11月に原典がオープンソースになって、現代の環境に合わせた見直しがコミュニティで進められているんだ。原典を理解したうえで、使う基盤の推奨も合わせて確認しようね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
Twelve-Factor Appって出てきたら「クラウドで動かしやすいWebアプリを作るための12個の原則」と思えればだいたいOK!
📖 おまけ:英語の意味
「Twelve-Factor App」 = 12の要素からなるアプリ
💬 Heroku共同創業者のAdam Wigginsが2011年にまとめたよ。2024年11月にオープンソースになり、今はコミュニティで現代向けの見直しが進められているんだ

参考資料

← 用語集にもどる