モダン開発の必修科目:2025年版『The Twelve-Factor App』完全ガイド
The Twelve-Factor App (2025)
The Twelve-Factor App (2025)
『The Twelve-Factor App』は、スケーラブルで堅牢なWebアプリケーションを構築するためのモダンなベストプラクティスをまとめた決定版です。クラウドネイティブな開発が当たり前となった2025年においても、その原則はエンジニアにとって不可欠な指針であり続けています。効率的なデプロイ、環境間の差異解消、そして水平スケーリングを実現するための「12の教義」を改めて学び、開発プロセスの質を向上させましょう。
今のMFAの苦痛で持続不可能なトレンドの馬鹿げた様子を示す、12層MFAのデモかと思ってたわ。
当時はHerokuこそが未来になると思ってたよ。Azureで意味不明なことに悩まされるたびに、失われたあのシンプルな未来を夢見てしまう。
今でもめちゃくちゃ参考になる。適用するかどうかは別として、15分で読むだけで学べることは山ほどあるよ。
ただ一つ不満なのが第3章のConfig 1だな。
「環境変数に設定を保存する」「Amazon S3やTwitterなどの外部サービスへの認証情報を入れる」っていう部分。
悪いアドバイスなだけじゃなく、これが二次的な悪影響として、ローカルのenvシークレットを全部 ~/.bashrc に書き込んでもいいんだと開発者に誤解させる原因になってる。
これやるのはもうやめよう。他の11.5個の要素を守るだけで十分だよ。
.envが問題を抱えているのは周知の事実だけど……!varlock (https://varlock.dev) をチェックしてみて。無料のオープンソースで、お馴染みの構文をベースにモダンなDSLとして改良されててすごく使いやすい。
バリデーション、型安全性、関数によるコンポジション、プラグインでの読み込み、漏洩防止なんかが組み込まれてるよ。
これがソフトウェア開発における自然で正しいやり方だと感じられていたのが面白いよね。当時はみんながこれを北極星のように参考にしていた。それが徐々に近づきつつも、いつの間にか通り過ぎてしまった。個人的には、こうした概念を活かすにはジェネラリスト的なマインドセット、つまりアプリケーションアーキテクトの視点が必要だと感じてる。今のチームにはプロダクトエンジニアやPM、管理職ばかりで、エンジニアにはこういった概念を推し進めるための権限やインセンティブが十分にないことが多いからね。
それでも、こうした概念は石に刻まれたかのように重要で、結局みんなまた同じところに行き着くんだろうな。
ベストプラクティスとしては概ね良いけど、12FAモデルは「状態(ステート)」をスコープ外に追いやって完全に思考停止してる気がする。「状態はあっちの外部サービスにあるから見ないフリ、サル三匹の絵文字」って感じで。
でも実際には状態こそがすべてって場合もあるし、自分自身で管理しなきゃいけないこともある。そうなると、プロセスの一部は9要素や10要素(12FAの原則外)にならざるを得ないよね。
自分のアプリでのシークレット管理のトレードオフについて悩んでる。保存自体は暗号化すればなんとかなるけど、配送が厄介だよね。環境変数経由の配送はシンプルだけど漏洩リスクがある。ジョブごとの署名を使う手もあるけど、それだとジョブがシークレットをログに吐き出すのを防げないから、被害範囲を小さくするくらいにしかならない。
まあ、ジョブが終わったりデプロイ完了後にシークレットを削除するなら、結果はほぼ同じだけどね。
タイトルに(2011)って入れるべきだな。
2025年か?