Webアプリの基本原則~The Twelve-Factor App
開発者が作るべきWebアプリとはどのようなものでしょうか。その基本となるのがThe Twelve-Factor Appです。2012年、PaaSベンダーHerokuのエンジニアが、数多くのクラウドアプリを開発・デプロイ・サポートして得た知見をもとに、現代のWebアプリが従うべき12の基本原則を提唱しました。The Twelve-Factor Appは、この原則に沿って開発されたアプリのことであり、「クラウドネイティブなアプリ」の代名詞とも言われます。2016年にはPivotalのアーキテクトがこれを増補し、APIファーストをはじめ3条件を加えたBeyond the Twelve-Factor Appを提唱するなど、この思想の重要性はクラウドの発展とともに高まり続けています。
The Twelve-Factor App
- コードベース(Codebase)
- 依存関係(Dependencies)
- 設定(Config)
- バックエンドサービス(Backend services)
- ビルド、リリース、実行(Build、release、run)
- プロセス(Processes)
- ポートバインディング(Port binding)
- 並行性(Concurrency)
- 廃棄容易性(Disposability)
- 開発/本番の一致(Dev/prod parity)
- ログ(Logs)
- 管理プロセス(Admin processes)
The Twelve-Factor Appでは、アプリは安全に再起動できるステートレスなプロセスを基本単位として実装し、ポートを唯一のインターフェイスとして公開します(6. プロセス、7. ポートバインディング、9. 廃棄容易性、11. ログ)。プロセスは機能単位で分離して相互に独立させます(8. 並行性)。データベース等のアプリに必要な汎用機能には、容易に交換でき明確なインターフェイスを持つサービスを利用します(4. バックエンドサービス)。アプリのコードは、依存関係や設定を明確化したうえで、GitHubなどで一元管理し(1. コードベース、2. 依存関係、3. 設定)、CI/CDツールで構築やデプロイを自動化できるようにします(5. ビルド、リリース、実行、12. 管理プロセス)。これらを遵守することで、堅牢性・保守性の高いアプリの実現や容易な環境構築が実現します。
PaaSで簡単にThe Twelve-Factor Appを実現する
以上を踏まえて開発に取り組むとき、便利なのがHeroku、Cloud Foundry、Google App EngineといったPaaS基盤です。これらのPaaSは、Webアプリのコードをデプロイするだけで、適切なコンテナを生成し、必要なライブラリをインストールしたうえでインターネットに公開します。開発者が集中すべきことは、Webアプリを開発することです。開発者はインフラの構築・運用という作業から解放され、サービスのコアとなるコードの実装に専念できます。
富士通はクラウドサービス「K5」で、The Twelve-Factor AppやBeyond the Twelve Factor Appを支えるサービス群を提供しています。アプリ実行基盤「Cloud Foundry」、コードやイシューを管理する「GitHub Enterprise」、Apigee社のAPIゲートウェイ「Apigee Edge」、Akamai社の「CDNサービス」など、開発者にポピュラーなサービスをマネージドサービスとして提供しています。今後は、OSSのコンテナ管理基盤Kubernetesでコンテナ管理を行う「コンテナサービス(仮)」、ステートレスな関数がイベントドリブンに処理を実行する「FaaS(仮)」なども提供する予定です。