データベースのマルチテナントなんてベンダーの都合に過ぎない
SAP HANAはデータベースとして進化し、いまや基幹系システムのSAP ERPも動かせるようになった。また、今後サービス化されるSAPの新しい「シンプルERP」のエンジンもHANAだ。このシンプルERPはクラウドでのサービスとなるが、それでもHANAにはマルチテナントは必要ないとプラットナー氏は断言する。
世の中に「マルチテナント」という言葉を定着させたのは、セールスフォース・ドットコムのCEO マーク・ベニオフ氏だろう。彼は何年間にもわたり、同社のクラウドサービスが「マルチテナントであることこそが大きな特長の1つ」と主張し続けてきた。莫大なリソースを複数のユーザーで共有する。そうすることで安く早くアプリケーションを提供できる。たんなるメリットというよりもクラウドの必要条件の1つが、マルチテナントという印象を市場に植え付けたと言っても過言ではない。
そのマルチテナントをどのレベルで実現するべきかでベニオフ氏に喧嘩を仕掛けたのが、彼の師匠でもあるオラクルCEO ラリー・エリソン氏だ。アプリケーションレベルでマルチテナントを実現しているSalesforceのクラウドサービスは不完全で伸縮性に乏しいと指摘した。実際Salesforceのサービスにはアプリケーションレベルでマルチテナントを実現しているがために、「ガバナー制限」と呼ばれる厳しい制約がある。これをうまく回避するのが、Salesforceで仕事をするエンジニアのテクニックの1つにもなっている。
喧嘩を仕掛けたオラクルは、マルチテナントをデータベースのレベルで実現してみせた。それがOracle Database 12cの最大の特長となる「マルチテナント・アーキテクチャ」だ。コンテナデータベースとプラガブルデータベースを使い、1つのデータベースの中に「完全に分離されたデータベース」をいくつも動かせるようにした。
後にベニオフ氏とエリソン氏はあっさりと和解し、セールスフォース・ドットコムとオラクルは2013年6月戦略的な提携を発表する。今後セールスフォース・ドットコムはオラクルのオペレーティングシステム「Oracle Linux」、エンジニアドシステムズの「Exadata」、そして「Oracle Database」および「Java Middleware Platform」をベースに、同社サービスの標準化を図っていくと表明している。
どのレベルでマルチテナント性を確保するべきか
ここで整理しておきたいが、データベースにマルチテナント機能があることと、クラウドのサービスがマルチテナントで提供していることは違う。クラウドのサービスを利用するユーザーにとっては、マルチテナントがどのレベルで実装されていても関係ない。結果的に自分たちが利用するクラウドが安全で柔軟な伸縮性を持っていればいい。なのでマルチテナントがアプリケーションのレベルでもデータベースのレベルでも、はたまた仮想化ハイパーバイザーのレベルでもあまり気にしないかもしれない。そう考えれば、プラットナー氏が言うようにデータベースにマルチテナントの機能は必須ではないだろう。
SAPの主力であるERPの世界は、アプリケーションやデータベースのレベルで仮想化し分離するよりも、クラウド上であってもいっそ自分専用のリソースを確保したい。他人の利用がいっさい自分たちのシステムに影響を与えないで欲しいと考える企業も珍しくないだろう。これにはIBMのSoftLayerのように、いっそベアメタル型のクラウドサービスの上でERPを動かしたいと考えるかもしれない。
一方でとにかくなんらかのアプリケーションをクラウドで安く使いたい、素早くグローバル展開したい企業であれば、結果的にデータベースのレベルでマルチテナントを実現しているクラウドサービスや、Salesforceのようにアプリケーションレベルでマルチテナントを実現しているサービスを選ぶほうがコスト効率はよくなる。サービスベンダー側の管理コストやリソースの有効利用を考えれば、なるべく上位レイヤーでマルチテナントを実現しているに越したことはないからだ。
Salesforceの場合は冗長構成は別として、基本的に1つのデータベースを複数のユーザーで共有する。世界中の大勢のユーザーが、1つのアプリケーションを利用するアーキテクチャだ。アップデートもパッチ当ても1つのシステムに対して行えば、その恩恵はそれを使っているすべてのユーザーが享受できる。実際はそんなに単純な話ではないかもしれないが、考え方はそうなっている。
Oracle Database 12cのマルチテナント・アーキテクチャも管理単位は1つのコンテナデータベースだけでいい。その上で動くプラガブルデータベースがいくつあっても、管理の基本は1つのコンテナ単位で済んでしまうのだ。
一方でSAP HANAの場合は、ユーザー企業ごとにデータベースが動くことになる。ユーザーが増えればそれだけ管理対象のデータベースは増える。数千、数万と契約が増えていけば、それだけ管理手間は増えるだろう。そうなれば、最終的にはその手間の分のコストがクラウドサービスの費用にも影響するはずだ。
とはいえSAP HANA Enterprise Cloudのように、管理を行うのがSAP自身であれば運用管理の作業をなるべく集約し効率化する工夫はできる。むしろ、ハイパーバイザーのレベルで完全に分離できているメリットがアピールポイントになるかもしれない。
プラットナー氏の言うように、データベースにマルチテナント機能がいるかどうかはベンダーの都合と言うのは、たしかにその通りの面もある。ユーザーはマルチテナント機能が欲しいのではなく、マルチテナントで実現されたサービスを使いたいだけだからだ。とはいえ、自分たちがどのようなアプリケーションをクラウドで活用したいのか、さらにはハイブリッドクラウドのようなものも将来的には視野に入っているかなどによっては、どのレベルでマルチテナント性が確保されているかをユーザーも意識する必要がある。
SAPとオラクルのマルチテナントに対する考え方の違いは、アプリケーション屋とデータベース屋の発想の違いかなと思う。どちらの主張が正しいではない。自分たちが利用しようとしているものでは、マルチテナントをどう捉えておけばいいかを考えておく必要がありそうだ。