知られざる「マルチテナントアーキテクチャ」(1)~SaaSはみんな同じではない?

2009年5月26日

クラウドが備えるスケーラビリティやアベイラビリティ、そして膨大な処理能力を実現する技術として、MapReduceやキーバリュー型データベースが注目を浴びています。「リレーショナルデータベースはもう古い」という人さえいるほどです。

ところが、そんな話題の新テクノロジーに背を向けて、既存技術であるリレーショナルデータベースを核にしつつクラウドを構築し、絶大なスケーラビリティと信頼性を実現している企業があります。セールスフォース・ドットコムです。

彼らはMapReduceもキーバリュー型データベースも使わずに、どうやってスケーラビリティや信頼性を備えたクラウドを実現しているのでしょうか? 同社が公開している情報はそれほど多くないのですが、それらをつなぎ合わせて見えてきたいくつかの技術的な仕組みを、何回かに分けて紹介したいと思います。

Salesforceはどれほどスケーラブルか

セールスフォース・ドットコム、100万ユーザ突破へ - salesforce.com

同社のクラウドが提供するスケーラビリティと信頼性について把握しておきましょう。まずはユーザー数です。同社が発表した最新のユーザー数を探してみると、2007年12月に発表された「セールスフォース・ドットコム、100万ユーザ突破へ - salesforce.com」が見つかります。3万1800社、100万人がユーザーとなったとしています。これらは1年以上前の数字ですから、現在はこれより増えていることは間違いありません。

つまり、基本的にSalesforce.comでSaaSとして提供されている1つのアプリケーションが、この約3万社、100万人以上のユーザーで利用されていることになります。

クラウドの効率性:Salesforceの全サービスはわずか1,000台のサーバで運用されている - TechCrunch

この大規模システムは、わずか1000台程度のサーバで構築されていることが今年の3月に明らかになり、話題になったことは記憶に新しいところです(参考:クラウドの効率性:Salesforceの全サービスはわずか1,000台のサーバで運用されている - TechCrunch)。

1000台の中にはディザスタリカバリ用のサーバなども含めたワールドワイドのサーバ数ですから、多めにみて3分の2が本番稼働用のサーバだとしても、わずか700台弱のサーバで100万ユーザーの面倒を見ていることになります。驚くべき効率性といえます。

信頼性については今年3月に「過去24カ月にわたって99.9%以上の稼働率である」と発表しています。エンドユーザー企業の求めるサービスレベルとしてはまだ十分ではないかもしれませんが、グーグルのGoogle Appsのサービスレベル保証は1カ月99.9%ですから、比較としては遜色ないといえそうです(アマゾンのAmazon EC2のSLAは年99.5%ですが、これはアプリケーションを含まないインフラのSLAですから直接比較はできないと考えます)。

「マルチテナントアーキテクチャ」がカギ

マルチテナントプラットフォーム オンデマンドで成功する決め手 -Salesforce.com

3万社以上の企業ごとにセキュアな方法でアプリケーションを提供する方法を単純に考えれば、1社ごとにサーバを用意して運用したくなりますが、それをセールスフォースではわずか1000台のサーバで実現しています。この効率性はどこからくるのでしょう? 彼らは「マルチテナントアーキテクチャ」こそカギであると主張しています。

マルチテナントアーキテクチャとは、マルチテナント、つまり複数の顧客に対して、どのようなアーキテクチャでサービスを提供するかを決めるSaaSのアーキテクチャのことです。

専門家の意見をまとめると、マルチテナントアーキテクチャには次のような3つのレベルがあるとしています(参考1参考2参考3参考4)。

(レベル1)全利用者が同一データベース、同一スキーマを共有

全利用者が1つのインフラを共有し、運用も共通化できるため、もっとも効率の良いマルチテナントアーキテクチャ。セールスフォースはこの方式を採用。

(レベル2)全利用者が同一データベースを共有。スキーマは個別。

あるいはスキーマは同一で、データベースは個別

工夫次第でインフラの共有は可能だが、スキーマ管理や運用管理は個別に行うことになり、運用に手間がかかる。

(レベル3)利用者ごとに個別のデータベース、個別のスキーマ

利用者からの個別のリクエストに柔軟に対応しやすくなるが、しかしデータベースの種類が増えて管理が面倒になり、運用の手間がかかる。共有部分も減り、インフラの利用効率も悪い。

セールスフォースはレベル1のマルチテナントアーキテクチャを採用しているからこそ、サーバリソースを最大限に高い効率で稼働させることができているうえに、管理のコストが低く抑えられている、というのが専門家の共通認識です。これによって高品質低価格のサービスが実現できている、とセールスフォース自身も主張しています。

fig (左)ユーザー企業ごとにデータベースを用意するシングルテナントアーキテクチャでは、データベースごとに管理者が必要となるため多くのシステム管理者が必要となり、またインフラの利用効率をあげることも難しい。(右)マルチテナントアーキテクチャでは、全ユーザーが1つのインフラを共有するため管理者が少なくて済み、インフラの稼働効率も高くなる(セールスフォースのプレゼンテーション「Multi-Tenant Magic:Under the Covers of the Force.com data Architecutre.」から抜粋)

このアーキテクチャでは全利用者が同一のインフラを共有できるため、例えばアジア、ヨーロッパ、アメリカのようにビジネスアワーが分散した顧客がいれば、サーバはつねに高効率で稼働させることができます。

セールスフォースの資料を読むと、明言こそしていませんが「SaaSはすべて同じではない」などの表現から、レベル1だけが本当のマルチテナントアーキテクチャだという考えがうかがえます。

一方で、レベル1のアプリケーションの実装は複雑です。同じデータベースに複数の企業が利用するデータを保存しつつ、どうやって企業間のデータのセキュリティを維持するのか? 同一のスキーマを利用しつつ個別のカスタマイズにどうやって対応するのか? などの課題が待ち受けているのです。

こうした課題があるため、ライバルとなるオラクルが提供する「Oracle CRM on Demand」やSAPの「SAP CRM on Demand」では、レベル1のマルチテナントアーキテクチャは採用しておらず、シングルテナントアーキテクチャを用いているようです(参考1参考2)。

さて。マルチテナントアーキテクチャの採用で高効率性は実現できても、それだけではスケーラビリティやアベイラビリティの実現にはなりません。そこにはまたマルチテナントアーキテクチャによる別のテクノロジーが用いられています。それについては次回に説明します。

ここで説明しているセールスフォースのマルチテナントアーキテクチャについては、同社が公開している資料などに基づいて僕が理解したことをまとめたものです。できるだけ正確な説明を心がけていますが、推測に基づく部分があること、同社の公式見解とは異なる部分などがあるかもしれないことをお断りしておきます。参照した情報は以下をご覧ください。

(「知られざる「マルチテナントアーキテクチャ」(2)~スケーラビリティのカギは組織ID」へつづく)

関連記事 on Publickey

参考情報 on the Web

あわせて読みたい

クラウド SaaS Salesforce マルチテナントアーキテクチャ




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本