◯クラウドをうまく使いこなすには?
イケてるクラウドサービス、イケてる技術を組み合わせればうまくいくとは限りません。
その機能を実装するうえで考慮すべき項目、見本となるサービス、短期間で実装可能な方法を考えて開発していく必要があります。
でもそうした内容をゼロから考えるとなると、設計初期の要件定義と設計の間、要はアーキテクチャ作りに物凄い労力がかかるわけですよ。
そこでThe Twelve-Factor Appです。
The Twelve-Factor Appはクラウドを使いこなすための原則ガイドラインをまとめたものです。
The Twelve-Factor Appを知ると、SaaS開発がスムーズに走っていける環境が作れるんじゃないかなと思います。
The Twelve-Factor AppはもともとHerokuのエンジニアの方が作ったものなので、クラウドというよりアプリケーション開発に特化したイメージがありますが、一応原則があります。
- セットアップ自動化のために宣言的なフォーマットを使い、プロジェクトに新しく加わった開発者が要する時間とコストを最小化する
- 下層のOSへの依存関係を明確化し、実行環境間での移植性を最大化する
- モダンなクラウドプラットフォーム上へのデプロイに適しており、サーバー管理やシステム管理を不要なものにする
- 開発環境と本番環境の差異を最小限にし、アジリティを最大化する継続的デプロイを可能にする
- ツール、アーキテクチャ、開発プラクティスを大幅に変更することなくスケールアップできる
ポイントは、The Twelve-Factor Appの方法論はどのようなプログラミング言語で書かれたアプリケーションでも適用できるということ。
また、どのようなバックエンドサービス(データベース、メッセージキュー、メモリキャッシュなど)の組み合わせを使っていても適用できる点です。
特にプラットフォームを指定していないので、誰もが導入して、誰もが実践できるのです。
◯Azureで実現する12のFactor App
The Twelve-Factor Appというぐらいなので、12個のファクターがあります。
全体をざっと見て頂きたいなと思います。
The Twelve-Factor Appは方法論ではあるものの、非常に抽象化した言葉で書かれています。
それぞれのファクターで実現できる機能に関してAzureは無数にあるんですが、ここに書いてあるのはあくまで一例です。
例えばファクターⅠ「コードベース」、Ⅱ「依存関係」、Ⅴ「ビルド、リリース、実行」。
これを実現するのはAzure DevOps Serverで、その中でもAzure Repos、Azure Pipelines、Azure Artifactsを使ってファクターⅠ、Ⅱ、Ⅴができるわけです。
Ⅲ「設定」とありますが、これだけだと非常に意味が幅広い。
Twelve-Factor Appにおける設定というのは、どちらかというとデプロイ時における環境変数のセットアップやその他諸々のセットアップの話です。
例えば.envファイルをAzure Web Appsの環境変数に割り当てたり、.envそのものをAzure Key Vaultで管理するなどといったことです。
他にもたくさんありますが、Azureで実現できれば、アプリケーションで一つ一つ実装していくより遥かに簡単ですし、SaaSアプリケーション開発の高速性に繋がるわけです。(後編につづく)
☆本記事はオルターブースYouTubeチャンネルの配信動画をもとに再構成しています。
☆配信動画の本編をご覧になりたい方はこちらから!(小島発表パート 15:20~32:14)