重要性を増すクラウドの「マルチテナンシー」
クラウドを低価格で提供するためには、1つのサーバにいかに多くの顧客を詰め込めるかという「密度」が重要になります。密度が高ければ高いほど安い単価で顧客にサービスを提供できるからです。
「マルチテナンシー」を実現するOracle Database 12c
先週サンフランシスコで開催されたOracle OpenWorld 2012で発表されたオラクルの次期データベース「Oracle Database 12c」の目玉機能は、データベースをクラウドで使う際にサーバ当たりの顧客数をいかに高められるか、密度を上げられるかを追求したものでした。
オラクルはそれを「データベースのレベルでマルチテナンシーを実装したもの」と表現しています。1つのデータベース上で複数の顧客(=テナント)を共存させつつ安全に分離することで、効率よく高い密度でサービスを提供するわけです。
顧客ごとに別々のデータベースを起動する方法と比べると、マルチテナンシーを採用したOracle Database 12cは5倍もハードウェアリソースを利用する効率が高く、スケーラブルだと説明しています。
テナント分離方式には1000倍以上の開きがある
Oracle OpenWorld 2012と同時開催されたJavaOneではIBMがマルチテナンシーについて実に面白い資料を公開しました。下記の図は、テナントの分離方式の違いによって、テナントごとにどれだけのメモリリソースを消費するかを示した図です。下から「Hardware」「OS image」「Middleware」「Application」とレイヤが分かれています。
図の一番左、テナントごとに別々のハードウェアを利用したときには、テナントごとに1GB以上のメモリが必要となります。その右、ハイパーバイザによってハードウェアを共有しても、OSイメージが別々ならば引き続きテナントごとに1GB以上のメモリが必要。
これがOSイメージを共有するとテナントごとに必要なメモリは100MB単位となり、ミドルウェア(例えばWebSphere)まで共有してアプリケーションレイヤで分離すればテナントごとに必要とするメモリは10MB単位程度。
さらにアプリケーションも共有し、内部的にテナントを分離すれば10KB単位のメモリで済むというのです。
この資料はテナントの分離方式によってテナントの密度は優に1000倍もの開きがあることを示しており、密度はそのままサービスの単価に跳ね返ってくるわけです。例えば、単純に計算して10GBのメモリを搭載したサーバをハイパーバイザでテナントごとに分離するとわずか10テナントにしか貸し出せないのに対し、アプリケーションまで共有してテナントに貸し出せば1万テナントにも貸し出せることになります。
Java EEのマルチテナンシー機能は先送りに
安いクラウドサービスを提供するためには、より効率の高いテナント分離方式を選択するべきです。もちろんそこには柔軟性の違いなどもありますから、適切な分離方式を選ぶことも同時に欠かせません。
Javaではまだミドルウェアレベルでのマルチテナンシーを提供していません。当初は来年リリース予定のJava EE 7にミドルウェアレベルのマルチテナンシーが組み込まれる予定でしたが、その次のJava EE 8へと先送りになってしまいました。
いずれにせよ、Oracle OpenWorldでもJavaOneでも、効率の高い「マルチテナンシー」がクラウドで重要視されてきた、という傾向を見て取ることができます。
マルチテナンシーの重要さを訴えてきたのはセールスフォース
もともとクラウドで「マルチテナンシー」がいかに重要かを訴え続けてきたのは、セールスフォース・ドットコムのマーク・ベニオフ氏でした。セールスフォース・ドットコムのクラウドは10年以上前から、アプリケーションレベルで高度なマルチテナンシーが実現されています。
ベニオフ氏は2010年時点で、セールスフォース・ドットコムは7万7000社の顧客をわずか3000台のサーバで対応していると説明していました。バックアップも遠隔地のディザスタリカバリ用サーバもすべて含めてです。
もしも7万7000社全部がクラウドを利用する代わりにサーバを2台ずつ導入したとしても15万台以上の物理サーバが必要となります。それがわずか3000台で済んでいるのですから、マルチテナンシーがいかに効率的なのかが分かります。ベニオフ氏がそれを自慢するのも当然でしょう。
しかし昨年のOracle OpenWorldでそれに噛みついたのが、米オラクルCEOのラリー・エリソン氏でした。
エリソン氏は昨年、Oracle Cloudを発表するに当たり、仮想マシンでセキュアに分離されたクラウドの方がスケーラビリティやセキュリティで優れており、一方でセールスフォース・ドットコムのクラウドがアプリケーションレベルでマルチテナンシーに対応した結果、Java EEなどの業界標準に対応していないことを攻撃しました。
こうした挑発合戦は昨年、Oracle OpenWorldのスポンサーとして参加したはずのセールスフォース・ドットコムによる基調講演が、オラクルによって突然キャンセルされるという事態にまで発展しています。
日本のイベントではありえないようなことですが……
ミドルウェアで実装が始まるマルチテナンシー
ところが今年、オラクルはOracle Database 12cを発表し、データベースレベルでマルチテナンシーを実現すると宣言しました。Java EEでもプラットフォームレベルでマルチテナンシーを組み込もうとしています。
昨年「仮想マシンによる分離が優れている」と言っていたはずのラリー・エリソン氏は「マルチテナンシーをデータベースレベルで実装したことで、セキュリティと効率さを実現するだけでなく、それぞれのデータベースのセキュリティ機能はそのまま維持される」と、したり顔です。
そして、アプリケーションレベルでマルチテナンシーを実装するのは間違いだ。データベースレベルで実現するべきだと、相変わらず今年もセールスフォース・ドットコムを挑発しています。
もちろんセールスフォース・ドットコムだってデータベースレベルでのマルチテナンシーがあれば、それを利用していたことでしょう。彼らが最初にシステムを構築した10年以上前にはそんな技術はなかったために、独自にアプリケーションレベルでマルチテナンシーを実装することになったわけです。
セールスフォース・ドットコムが10年以上前に実装し、その高い効率性を証明し続けてきたマルチテナンシーは、ようやくそれぞれのレイヤに最適化された形で取り込まれようとしています。マーク・ベニオフ氏は「ラリー、10数年前のセールスフォース・ドットコムにようやく追いついたのかい?」とでも言いたいのではないでしょうか。
いずれにせよ、今年のOracle OpenWorld/JavaOneでマルチテナンシーの重要性が広く語られるようになってきました。クラウドの効率性にかかわる大事なキーワードだけに、今後この分野での議論や技術はさらに深まっていくはずです。
Oracle Database 12cのリリースは来年、Java EE 8でミドルウェアにマルチテナンシーが組み込まれるのは、2015年頃の見通しです。
あわせて読みたい
IBM、ハードとソフトを垂直統合したデータベースマシン「PureData System」発表。オラクルExadataとの違いは
≪前の記事
IBMの新メインフレーム、商用初のトランザクショナルメモリ搭載でJavaを超高速実行。JavaOne 2012