マルチテナンシーとは、複数のクラウド顧客が同じコンピューティングリソースにアクセスするという概念です。たとえば、複数の企業が同じ物理サーバーにデータを保存する場合です。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
クラウドコンピューティングにおいて、マルチテナンシーとは、クラウドベンダーの複数の顧客が同じコンピューティングリソースを使用することを意味します。マルチテナンシーとは、クラウドベンダーの複数の顧客が同じコンピューティングリソースを利用することを意味します。マルチテナンシーは、クラウドコンピューティングの重要な構成要素です。マルチテナンシーがなければ、クラウドサービスの実用性はずっと低くなります。マルチテナントアーキテクチャは、IaaS、PaaS、SaaS、コンテナ、サーバーレスコンピューティングなど、多くの種類のパブリッククラウドコンピューティングの1つの機能です。
マルチテナンシーを理解するには、銀行業務の仕組みを思い浮かべてみます。複数の人々が1つの銀行にお金を預けることができ、そうした資産は同じ場所に保管されているにも関わらず完全に分別されています。銀行の顧客は、お互いにやり取りすることはない、他の顧客の資金にアクセスできない、そしてお互いに面識はありません。同様に、パブリッククラウドコンピューティングでは、クラウドベンダーの顧客は、同じインフラストラクチャ(通常は同じサーバー)を使用しますが、データやビジネスロジックは別々に安全に保管します。
従来のマルチテナンシーの定義は、複数のユーザーまたはテナントに対応する1つのソフトウェアインスタンス*でした。しかし、現代のクラウドコンピューティングでは、この用語は広義の意味を持ち、単なる共有ソフトウェアインスタンスではなく共有クラウドインフラストラクチャのことを指します。
*ソフトウェアインスタンスとは、ランダムアクセスメモリ(RAM)上に展開して処理・実行できる状態にしたプログラムのコピーのことです。
クラウドコンピューティングでは、アプリケーションとデータはさまざまなデータセンターのリモートサーバー内でホストされ、インターネットを介してアクセスされます。アプリケーションとデータは、個々のクライアントデバイス(ノートパソコンやスマートフォンなど)や企業のオフィス内のサーバーではなく、クラウド内で集約化されます。
多くの現代のアプリケーションは、クラウドベースです。たとえば、ユーザーは複数のデバイスからFacebookアカウントにアクセスしてコンテンツをアップロードできます。
クラウドコンピューティングのメリットの多くは、マルチテナンシーが前提条件となっています。マルチテナンシーは次のような2つの方法でクラウドコンピューティングを向上させます:
リソースの有効活用:1つのマシンを1つのテナントのためだけに使用するのは非効率的です。その1つのテナントが、そのマシンに備わっている計算能力すべてを使用する可能性は低いからです。複数のテナントがマシンを共有することで、利用可能なリソースを最大限に活用できます。
コストの低減:複数の顧客でリソースを共有することで、クラウドベンダーは、各顧客が専用のインフラストラクチャを必要とする場合に比べて、ずっと低いコストで多くの顧客にサービスを提供できます。
潜在的なセキュリティリスクとコンプライアンスの問題:一部の企業は、規制要件により、どれほど安全であっても、共有インフラストラクチャにデータを保管することはできません。また、1つのテナントのセキュリティの問題や破損したデータが、同じマシン上のほかのテナントに広がる可能性があります。ただし、クラウドベンダーがインフラストラクチャを正しく構築していれば、そうした事態が起きるのはまれであり、起きるべきではありません。通常、クラウドベンダーは個々の企業よりも、セキュリティに対して多くの投資を行えるため、ある程度こうしたセキュリティリスクは軽減できると考えられます。
「うるさい隣人」問題:あるテナントが過度の計算能力を使用している場合、ほかのテナントのパフォーマンスが低下する可能性があります。同じく、クラウドベンダーがインフラストラクチャを正しく構築していれば、この問題は生じないはずです。
Cloudflareは、どのようなクラウドデプロイメントであっても、データの安全性を確保して、Webプロパティを高速化できるようにサポートします。Cloudflareのプロダクトスタックは、あらゆるタイプのインフラストラクチャの前に配置されるため、Webプロパティの安全性、高速性能、信頼性を高めます。Cloudflareプロダクトをクラウドデプロイメントに組み込む方法については、「クラウドインフラストラクチャの構築においてCloudflareが果たす役割」をご覧ください。
ここでは、さまざまなクラウドコンピューティングにおいてマルチテナンシーを可能にする技術原理について詳しく見ていきます。
複数の車とオーナーの間で容易に共有できる特殊なエンジンがあるというケースを想定して考えてみます。各オーナーは、少し異なる方法でエンジンが作動するようにする必要があります。パワフルな8気筒エンジンの性能を必要とするオーナーもいれば、より効率的な4気筒のエンジンの性能を必要とするオーナーもいます。この特殊なエンジンは、オーナーのニーズを満たすために、始動するたびに自由に変形できるとします。
これと同じような方法で、多くのパブリッククラウドプロバイダーは、マルチテナンシーを実現しています。大部分のクラウドプロバイダーは、マルチテナンシーを共有ソフトウェアインスタンスとして定義しています。各テナントについてのメタデータ*を保管して、そのデータを使用して、各テナントのニーズを満たすためにランタイム時にソフトウェアインスタンスを変更します。テナントはパーミッションを介して互いに隔離されています。全テナントが同じソフトウェアインスタンスを共有しても、それぞれのソフトウェアの使用方法・体験方法は異なります。
*メタデータとは、ファイルについての情報のことであり、本の裏表紙に記載されている内容紹介のようなものです。
コンテナとは、アプリケーション、システムライブラリ、システム設定など、アプリケーションが実行するのに必要なすべてのものが含まれる自己完結型のソフトウェアバンドルのことです。コンテナは、ホストされている場所に関係なくアプリケーションが同じように実行するようにします。
コンテナは、互いに区切られて別々のユーザー空間環境に置かれます。各コンテナは、ホストマシンに唯一存在するシステムであるかのように実行します。コンテナは自己完結型であるため、異なるクラウド顧客によって作成された複数のコンテナを1つのホストマシン上で実行できます。
サーバーレスコンピューティングとは、アプリケーションがファンクションと呼ばれる小さな単位に分割されて、各ファンクションがほかのファンクションとは別にオンデマンドでのみ実行するモデルのことです。(このクラウドコンピューティングのモデルのことを Function as a Service [FaaS]とも呼びます。)
その名のとおり、サーバーレスファンクションは、専用サーバー上では実行せずに、サーバーレスプロバイダーのインフラストラクチャ上の利用可能なマシン上で実行します。企業には専用の物理サーバーが割り当てられないため、多くの場合、サーバーレスプロバイダーは、いつでも1つのサーバー上で複数の顧客のコードを実行します。これが、マルチテナンシーのもう1つの例です。
一部のサーバーレスプラットフォームは、サーバーレスコードを実行するのにNode.jsを使用します。CloudflareのサーバーレスプラットフォームであるCloudflare Workersは、各ファンクションが独自のサンドボックス環境または別々の環境で実行するChrome V8を使用します。これにより、サーバーレスファンクションは、同じインフラストラクチャ上で実行中であっても互いに完全に区切られます。
プライベートクラウドコンピューティングは、パブリッククラウドコンピューティングとほぼ同じようにマルチテナントアーキテクチャを使用します。違う点は、ほかのテナントが社外のテナントではないことです。パブリッククラウドコンピューティングでは、A社はB社とインフラストラクチャを共有します。プライベートクラウドコンピューティングでは、A社内のさまざまなチームがインフラストラクチャを共有します。