クラウドにはやっぱりマルチテナントだけど
Google、Yahoo、Amzonなどの保有サーバー数の推測がよく噂になっていますが、企業むけクラウドであるSalesforceが最近、サーバー台数を語り始めました。先月行われたイベントでChief Software ArchitectのCraig Weissmanがプレゼンで言及したようですが、サーバー台数は現在1,000台以下だそうです。Salesforceは、現在5万社以上、100万以上の企業ユーザーがいるそうですから、1,000台では少なすぎるような気がしました。
では、1台平均何ユーザーかという大雑把な計算を単なる割り算でしてみると、1サーバーあたり約1,000ユーザー。これだと1サーバーで対応できるユーザー数としては現実味があるかもしれません。ただ、DB、アプリケーション、その他のサーバーすべて、ミラーリングも含んで、そして、SaaSとPaaSで10万以上のアプリケーションがあるとのことですので、そう考えると普通の企業では実現できない、かなりの効率の良さといえるでしょう。
むかしながらのASPであれば、5万社のユーザーをサポートするには5万台のサーバーを用意したくなるものです。それをクラスタリングでもすれば、あっという間に10万台。それを1,000台ですので、Salesforceがいつも主張しているマルチテナントの効率の威力ですね。そのマルチテナントですが、どうも巷でマルチテナントといっても様々なレベルがあるようです。ZDNetのSaaSのbloggerが3種類の分類を行っていて参考になります。
First-degree multi-tenancy (第1級マルチテナント)
全ユーザーが同じDBスキーマを共有し、同じアプリケーションのリリースを利用。最も効率的で、Salesforceなどはこれを採用。
Second-degree multi-tenancy (第2級マルチテナント)
全ユーザーが同じDBスキーマを共有するが、ユーザー企業ごとにアプリケーションのリリースは異なることができる。第1級よりユーザーへは柔軟だが、運用コストはかかる。
Lesser-degree multi-tenancy (弱いマルチテナント)
DBスキーマは共有せずユーザー企業ごとに別々で、アプリケーションのリリースも別にできる。ユーザーには極めて柔軟だが、運用コストはもっともかかる。OracleのSaaSはこれを採用。
この分類ではDBスキーマの共有が効率の尺度の一つになっています。SalesforceのDBスキーマの共有は徹底しているようで、データベースのテーブルは20もないとのことです。クラウドのベンダーが、5万ものユーザー企業を想定したら、運用コストを考えると、マルチテナントと言えどもSalesforceのように第一級をめざしたくなるでしょう。
ちなみにGoogle、そしてクラウドとは言わないでしょうがインターネットバンキング、などを考えると、相手が個人ですので企業という枠組みはありません。よってアプリケーションのリリースは一つ。当然のことながら第一級マルチテナント的となっていることでしょう。
それにしてもDBスキーマを共有するということは、アプリケーションの設計は今までと大きく変わり、データのセキュリティーを確保する機能が必要になるでしょう。売れ筋のソフトウェアをマルチテナントで規模の大きなクラウドにする。というのはアプリケーションの再設計、書き換え含め、かなりのチャレンジではと想像しています。