2024.12.24
「経営陣が見たい数字」が見えない状況からの脱却法 経営課題を解決に導く、オファリングサービスの特長
リンクをコピー
記事をブックマーク
小島淳氏:では、僕は「The Twelve-Factorで実践するSaaS開発」の話をしていこうと思います。
まず自己紹介です。株式会社オルターブースの代表をやっている小島と申します。よろしくお願いします。僕はMicrosoft MVPではなくて、Microsoft Regional Directorというものになっていて、Azureの啓蒙活動をしています。
先ほど他のメンバーからWell-Architected FrameworkやCloud Adoption Frameworkの話がありました。このフレームワークが何に使えるかというと、クラウドの導入やアプリケーションの設計に使えるわけですね。
ちょっとおさらいです。まずCloud Adoption Frameworkです。戦略、計画、準備完了、移行、こんなものがあって、ガバナンスと管理が全体的に動いていくフェーズが作られています。それぞれフレームワークやツールテンプレートが用意されているので、それらを使って中の計画を作って実践していくのがCloud Adoption Frameworkですね。
対象はどちらかというとエンジニアよりも、もう少しビジネス寄りの方が対象かなと思っています。
次に、Well-Architected Framework。これは5つのフレームワーク、5つの柱で成り立っています。コストの最適化、オペレーショナルエクセレンス、パフォーマンス効率、信頼性、セキュリティ。こんなものがあって、Azure自体のアーキテクチャのベストプラクティスが入っているわけですね。Well-Architected Frameworkは、エンジニアが車輪の再発明をしないようにするための設計の材料になると思っています。
これらがどういうところに使われるかについて話します。これはクラウド導入に対してのプロセスの一覧なんですが、まずCAF(Cloud Adoption Framework)については最初の部分ですね。クラウド導入するときに、データリストアの評価して、戦略を作って、どうやって移行するか、移行したあとはどうするか、そういったものを考える場なので、最初なんですよね。
解決提案には、我々のサービスである「KOSMISCH」を使ったりするんですが、新しい環境を考えるときは、このCAFの中から連動して、Well-Architected Frameworkに入っていって、設計して合理化をしていく。こんな流れが実際の流れだと思います。なので、CAFとWell-Architected Frameworkを同一で語るとちょっと混乱するので、分けたほうがいいと僕は思っています。
今日のテーマの1つのSaaS開発。未来のアーキテクトと言うと、かなり大きなことを言っているように見えるんですが、SaaS開発を始めたいという方もけっこういると思うんですよね。
初めてなんだけど、何からやろうか。もちろんアプリケーション設計・開発はやっているんですが、SaaSというのはクラウドサービスなので、それを実践するうえで必要な技術導入、設計の話など、どういうふうにやっていけばいいんだろうと。
さっきのCloud Adoption FrameworkだったりWell-Archi(Well-Architected Framework)を使ってもいいんですが、やっぱりかなり難しいですよね。いきなりこれらを使うのってなかなか難しいんですよ。誰と作るか? 何を作るか? どうやって作るか? どうやって売るか? こんなフェーズがあるとすれば……SaaSにおいてはすべてが大事なんですよ。ただ、SaaSのアプリケーション設計においては、どうやって作るか、どうやって売るか、この2つが非常に重要になっています。
ここで先ほどのCAFやWell-Archi(Well-Architected Framework)をうまく採用して、この分を埋めていくんですが、もう少しミニマムに考えていきましょうか。例えば以下のようなアーキテクチャの場合、どのようなビジネスモデルを持っているか想像できますか?
これはデータベースが並んでいるだけですね。インフラ構成図です。昔はよくこんなのが作られて、語られたときが多かったと思うんですよね。もしかしたら、みなさんまだこういうインフラ構成図を持って「このサービスはこうでこうで」って説明されているかもしれないですが、はっきり言って「なんのこっちゃ?」です。この構成からは、どのサービスがどういうふうに影響を受けているのかがぜんぜんわかりませんよね。
「モノリス」って言っていますが、要はわからないんですよ。わからないものはわからないとしか言いようがなくて、サーバーだけ並べたってビジネスの変化に合わせづらいわけですね。
一方、これはどうですか? こういったユースケースですね。これはたぶんなにかのユースケースフローだと思いますが、ここからどんなビジネスか想像できますか?
これはさっきとガラリと変わって、アプリケーションの中のユーザーの動きだけを模した図です。実際、こういうものもよく出てきますよね。「ユースケースがあるのでアプリケーションの動きわかるでしょ?」というパターン。わかるわけないですよね、そんなの。ねぇ。
結局アプリケーションアーキテクチャとしての絵、それとビジネスアーキテクチャとして絵、どちらも必要になってくる。これらの整合性を合わせて設計して導入するのがSaaSだと思います。
こういったものを無視したSaaSは必ず破綻します。必ず破綻するというとちょっと大げさですが、どっかで絶対つまずいちゃうんですよ。特にスタートアップの場合は、このつまずきが致命傷になる可能性が高いです。なので、SaaSを作っていくときは、ある程度ガイダンスを用意しておいたほうがいいんじゃないかと思っています。
そこで出てくるのがこれからお話しする「The Twelve-Factor App」です。「The Twelve-Factor App」はSaaS開発におけるベストプラクティスだと言われています。
今日は「ベストプラクティス」という言葉がやたら飛び交いますが、ベストプラクティスというのは、あくまでも事例です。なので、そこから先は自分で考えるべきだと僕は思います。そのまま真似したってうまくいきません。うまく真似するためのガイダンスだと思ってもらったほうがいいと思います。
The Twelve-Factor Appはもともと「Heroku」というクラウドのエンジニアの方たちが作った概念だと言われています。セットアップ自動化のための宣言的フォーマットを使って、プロジェクトに新しく加わった開発者が要する時間とコストを最小化します。開発環境そのものをテンプレートするわけですね。
あと、下層のOSへの依存関係を明確化して、実行環境間での移植性を最大化します。これはプラットフォームに依存しないためです。また、モダンなクラウドプラットフォーム上のデプロイに適していて、サーバー管理やシステム管理を不要なものにします。
それと開発環境と本番環境の差異を最小限にして、アジリティを最大化する継続的デプロイを可能にします。DevOpsを入れることで、ツール、アーキテクチャ、開発プラクティスを大幅に、変更することなくスケールアップします。これこそ、クラウドの目的ですよね。
当たり前のようなことなんですが、この当たり前のことをしっかりとガイドとして作られているのがTwelve-Factorです。なのでTwelve-Factorは、どのようなプログラミング言語で書かれたアプリケーションでも適用できます。そして、バックエンドサービス、データベース、メッセージキュー、メモリキャッシュ、さまざまなストアのサービスも含めて、どんな組み合わせを使っていても適用できるというのが特徴です。
どういうことを言いたいかというと、言葉としてメチャクチャ抽象化されているってことですね。Twelve-Factorの方法論はすごく抽象化されています。抽象化されているので、そこから実際に実装するという行為はけっこう難しいです。「どうやってAzureで実装するの?」というところを今日は話していこうと思います。
Twelve-Factorは、1~12までFactorがあって、それぞれカテゴリがあります。Azureのアイコンが入れ替わっていますが、AzureのPaaSのサービスやいろいろなサービスで実現できるところをバーって入れてあります。
実際にはもっと深いところにあって、Well-Archiなどを採用しながらTwelve-FactorのそれぞれのFactorを埋めていくというやり方がいいかなと思っています。
今日は全部を説明する時間がぜんぜん足りないので、かいつまんで説明していきたいと思います。その前に、このTwelve-Factor Appの超スーパーざっくり概要を話そうと思います。
みなさんの向かって右側にポスターがありますね。このポスターをちょっと見てもらいたいなと思います。ポスターのまず1、Buildから始まります。BuildのところにはCodebaseと書いてありますね。この場合、1、バージョン管理される1つのコードベースと複数のデプロイです。これが最初のFactorです。1つのコードベースを使いましょう。
そして2、依存関係を明示的に宣言して分離します。これが下の部分ですね。「Manifest」「Dependency」と書いてある部分です。そして環境変数を格納します。環境変数は別の部分に格納しましょうと明示的に言っています。
次にリリースです。バックエンドサービスをアタッチしたリソースとして扱うとか、ビルド・リリース・実行の3つのステージを厳密に分離するとか、アプリを1つまたは複数のステートレスなプロセスとして実行するとか、いろいろがここ書いてあります。
この12個のFactorをメチャクチャシンプルにまとめたのがこのポスターなんですが、このポスターだけを見ても、はっきり言ってわかりづらいです。ぶっちゃけ、このポスターだけを見てわかる人はぜんぜんいないと思います。なので、ここから先はそこらへんの話にゴーッと入っていこうと思います。
このポスターの話をしていくと、これだけで20分くらい使っちゃいそうなので、このへんにしておきます。この矢印見ておいてください。コードベースは1つの環境にする。1つのコードベースがたくさんの環境にあったらダメですよみたいなことを言っています。バックエンドサービスなどもそうですね。
では、実際にこのTwelve-FactorのFactorの中身の話をしていきましょう。Factorの中身の話はけっこうおもしろいですよ。
(次回へつづく)
関連タグ:
2024.12.24
なぜ「場当たり的」なタスク処理になるのか? マッキンゼー流、「優先順位づけ」のポイント
2024.12.27
生成AIスキルが必須の時代は「3年後ぐらいに終わる」? 深津貴之氏らが語る、AI活用の未来と“今やるべきこと”
2024.12.26
プロジェクトをスムーズに進めるマネージャーの「課題ツリー」活用術 マッキンゼー流、理論と実践のギャップを埋める3つのポイント
2024.12.25
今300万円の貯金を1年後に450万円に増やすには? マッキンゼー流、目標額との差額を埋めるための考え方
2024.12.24
生成AIを“業務のために使う”より、もっと効率のいい方法 深津貴之氏が語る、AIのビジネス活用法
2024.12.23
DMM亀山会長が語る、事業撤退の見極め 600もの事業に挑戦した中でロジックよりも大事にしていたこと
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.20
「資格のかけ算」で切り開くキャリア戦略 4パターンの資格の組み合わせで自分の強みを最大化するヒント
2024.12.25
ビジネスパーソンの仕事の3割〜4割はファイルなどの「探し物」 澤円氏が語る、無駄を省き業務効率を上げるAIの技術
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由