◯The Twelve-Factorの概要
皆さんこんにちは。オルターブースの小島です。
前回はSaaS開発する上でのガイダンスが、12個のファクターとしてあるという話をしました。
今回はそれらがどういう風に活用されているのかを話していこうと思います。
The Twelve-Factor Appは大きく3つのセクションがあります。
ビルド
リリース
ラン
まずはビルド内のコードベース。
このコードベースは、原則としては一つのコードベースです。
これはバージョン管理しているコードベースで、例えばGithubとかにデプロイされている、プッシュされているコードそのものですね。
一つのコードベースから全てが成り立ちます。
そしてそのコードベースには様々な依存関係がありますよね。ライブラリーに依存関係があります。
ライブラリーへの依存関係っていうのがディペンデンシーですね。
ディペンデンシーを明示的に分離するんですが、その時にマニフェスト、いわゆる宣言をするわけです。依存関係がこうなってますよという宣言をする。
どういう風にやるのかと言うと、パッケージで管理する。このライブラリーを自分で組み込むのではなく、パッケージで入れる。
そうすればパッケージの追加であったり削除であったり、簡単に依存関係が取れますよね。
こういう風にマニフェストを通じて依存関係を明確にします。
これがビルドです。
次にリリース。
Dev、Test、Production、この3つのステージ全てに同じコードベースが適用されている状態です。
これで本番ステージに開発環境が全て一致している状態を作ります。
これがリリースですね。
ランはかなり複雑です。
まずはコンフィギュレーションファイルから始まります。
アプリケーションに関する設定項目がたくさんあると思うんですが、これらは全てアプリケーション中に設定せずに、環境変数で全て制御する。
環境変数もできればアプリケーションではなくて、クラウド側に持たせてくださいね、と。
クラウド側には環境変数を補完して、安全に提供するようなサービスのたくさんあって、そういったものを使ってこのコンフィギュレーションファイルを管理していきます。
で、このアプリケーションはステートレスにすべきで、セッションデータといったデータを持ってはいけませんよと。
ではそういったデータはどこに置くのかというと、外部のバックエンドサービスに置く。
バックエンドサービスは内部だろうが外部だろうが、接続先を変えれば同じっていう考え方です。
そういう風に外部と内部との関係性は常に同じなんだという考え方で、バックエンドサービスを分離するんです。
さらにアプリケーションの実行プロセスは必ず全部分けましょうと。
例えばビルドをするスクリプトであったり、実際にランをするスクリプトであったり、全部分けていく。
一つのスクリプトの中に全部押し込まない。コマンドベースでちゃんと全てのステージを分ける。
これらが分かれていたら、しっかりとデータと連携できる疎結合になっていきます。
さらにAppサービスがあります。
これはインスタンスで、ポートバインディングします。
ポートバインディングというのは通常のアプリケーションの Web サービス、 Web サーバーのポート以外に、アプリケーションそのものが持っているポートで、外部に公開できて、複数Appサービスを並べたとしても、アプリケーションテストが容易にできるということですね。
これをポートバインディングって言います。
そしてプロキシを入れて、一個一個を公開していくわけですが、プロキシを入れたとなれば、このAppサービスはスケールアウトできるようになります。
さらにそれらをリバースプロキシの中にルーティングさせていくわけです。
で、これだけで終わりではないです。
さらに今度はログの話ですね。これすごく重要なんです。
ログといっても、色んなログがありますよね。
アプリケーションログからシステムログまで、色んなログありますが、アプリケーションの実行にかかるログは全てログっていう風に位置付けていいと思います。
標準出力(スタンダードアウト)にすると、標準出力でログをイベントストリームとして取り扱うってことです。
ログをイベントストリームとして取り扱って、それをストレージに入れて、そのまま解析して見える化します。
◯The Twelve-FactorはPaaS向き
こういう風に聞くと、やることいっぱいあるなあー、疲れるなあーって思わないでください。
これをクラウドでやれば意外と簡単にできちゃうんですよ。
これがThe Twelve-Factorです。
The Twelve-FactorはもちろんオンプレやIaaSでもできるんですが、簡単にやろうとするのであれば、やっぱりPaaSです。Azure の各サービスを使っていくわけですね。
それともう一つ大事なことがあって、The Twelve-Factor Appを実践するためには、その開発プロセスがアジャイル、もっと言うとDevOpsである必要があります。
そのDevOpsを導入するためには様々ことをやらなくちゃいけないんですよね。
チームビルディングもそうだし、アジャイル運用もしなくちゃいけない。
それらをやるためにツールも必要になります。そのツールとしてはAzure DevOpsを使っていくわけです。
なので、The Twelve-Factor AppとこのAzure DevOpsも密接な関係性を持っていて、The Twelve-Factor App全般はこのAzure DevOpsで構成されている形になっています。
SaaSアプリケーションから開発するのであれば、このThe Twelve-Factor Appをぜひ参考にして頂ければと思います。
さらにThe Twelve-Factor App on Azureのガイダンスも作成しているところなので、そちらもぜひ楽しみして頂きたいなと思っています。
それでは、また。(おわり)
☆本記事はオルターブースYouTubeチャンネルの配信動画をもとに再構成しています。
☆配信動画の本編をご覧になりたい方はこちらから!(小島発表パート)