ログイン / 登録 アカウント

クラウド・コンピューティング

マルチテナンシーとは

マルチテナンシーとは、単一のソフトウェアインスタンスが複数の異なるユーザーグループに対応するソフトウェア・アーキテクチャです。SaaS (Software-as-a-Service) によって提供されるものがマルチテナント・アーキテクチャの一例です。

クラウド・コンピューティングにおいて、マルチテナンシーは、サーバーリソースがさまざまな顧客の間で分割される共有ホスティングを指すこともあります。

マルチテナンシーは、ソフトウェアインスタンスやコンピューターシステムが 1 人の排他的ユーザー、あるいは 1 つのユーザーグループを有するシングルテナンシーと正反対のものです。

タイムシェアリングから SaaS へ

マルチテナンシーのアイデアは何十年も前からあります。1960 年代、強力で高価なメインフレームを持つ大学で、複数のユーザーが基本的に同時にコンピューターにアクセスできるタイムシェアリング・ソフトウェアが開発されました。

そのアイデアは決して消え去ることはなく、今日ではマルチテナンシーの概念がクラウド・コンピューティングを可能にしています。パブリッククラウドは、共有リソース (処理能力とメモリ) のプールを取得し、それを複数のテナント間で分割します。同じ物理マシンまたはマシンのグループで実行されたとしても、各テナントのワークロードは分離された状態を維持します。

同じアイデアをさらに一歩進めてソフトウェア・アーキテクチャに適用すると、SaaS の先進的なコンセプトにたどり着きます。SaaS プロバイダーは、アプリケーションの単一のインスタンスを実行し、個々の顧客にアクセスを提供します。他のすべてのユーザーと同じソフトウェアにアクセスしている場合でも、各ユーザーのデータは分離された状態を維持します。

Kubernetes のようなコンテナ・オーケストレーション・プラットフォームを指す場合、マルチテナンシーという言葉は通常、複数のプロジェクトに対応する単一のクラスタを意味します。クラスタは、各プロジェクトを他のプロジェクトから分離して実行するように構成されています。

マルチテナント・アーキテクチャのメリット

マルチテナンシーにはさまざまな利点があり、それはクラウド・コンピューティングの利用の広がりからも明らかです。

マルチテナンシーはお金を節約できます。コンピューティングのコストがかなり安価なうえ、マルチテナンシーにより、リソースを統合して効率的に割り当てることができます。個々のユーザーにとって、多くの場合、クラウドサービスや SaaS アプリケーションの利用に料金を支払う方が、シングルテナントのハードウェアおよびソフトウェアを実行するよりも費用対効果が高くなります。

マルチテナンシーは柔軟性をもたらします。独自のハードウェアとソフトウェアに投資している場合、需要量が高いときには容量の上限に達し、需要量が低いときにはアイドル状態になることがあります。一方、マルチテナントクラウドでは、ニーズの増減に応じて、それを必要とするユーザーにリソースのプールを割り当てることができます。パブリッククラウド・プロバイダーのユーザーは、必要なときに追加の容量にアクセスすることができ、不要なときには料金を支払う必要がありません。

マルチテナンシーの方が効率的です。マルチテナンシーにより、個々のユーザーがインフラストラクチャを管理したり、更新と保守に対応したりする必要性が減少します。個々のテナントがこのような定期的な対応を実行する際は、中央のクラウドプロバイダーに頼ることができるため、独自のチームは必要ありません。

シングルテナントの方が適しているケース

マルチテナントにはさまざまな利点がありますが、シングルテナントのコンピューターシステムの方が適しているユースケースがあります。

中でも主なものが、機密データを含むアプリケーションです。パブリッククラウド環境と SaaS 製品は、ワークロードとデータを分離するように設計されており、設計どおりに機能することが実績として示されています。しかし制御試験で、クラウド環境でのクロステナント攻撃が少なくとも理論的に可能になる脆弱性が発見されています。

実際には、このようなリスクは比較的小さいものです。米国国家安全保障局 (NSA) のクラウドの脆弱性に関する 2020 年のレポートによると、共有されたテナンシーの脆弱性はまれで、発生するには高度な複雑化が必要です。NSA のレポートが公開された時点では、主要なパブリッククラウド・プロバイダーに対するクロステナント攻撃は確認されていません。NSA は、これらのリスクを、不十分なアクセス制御や設定ミスによるリスクよりも小さいと考えています。

Linux のマルチテナント環境

マルチテナント環境をセットアップする場合、仮想マシン (VM) を使って環境を分離するか、それともコンテナを使うかという選択に直面します。

VM を使用すると、ハイパーバイザーは、それぞれ独自のオペレーティングシステム、アプリケーション、依存関係を持つゲストマシンを起動します。ハイパーバイザーによって、ユーザーが互いに分離されていることを確実にすることもできます。

VM に比べて、コンテナはより軽量で柔軟性があり、スケーリングが容易なモデルを提供します。コンテナは、カーネルとコンテナランタイムを使用して各コンテナを起動し、単一のホストに複数のアプリケーションをデプロイすることにより、マルチテナンシーのデプロイを単純化します。それぞれが独自のカーネルを含む VM とは対照的に、コンテナで実行されているアプリケーションは、複数のテナント間でもカーネルを共有します。

Linux® では、名前空間により、複数のコンテナが対立を生じさせることなく、同じリソースを同時に使用できるようになります。コンテナのセキュリティ保護は、実行中のプロセスをセキュリティ保護することと同じです。 

コンテナ・オーケストレーションに Kubernetes を使用すると、単一の Kubernetes クラスタを使用してマルチテナント環境をセットアップすることができます。テナントを独自の名前空間に分離し、テナントの分離を強制するポリシーを作成することができます。

クラウド・コンピューティングに必要なツール

Red Hat Enterprise Linux logo

軽量性を維持しながら、最適化された最小フットプリントのオペレーティングシステムで Linux コンテナを運用しましょう。

Red Hat OpenStack Platform product logo

標準的なハードウェア上で運用できるモジュール式のクラウド・インフラストラクチャで、必要なプライベートクラウド・ツールを、必要なタイミングで、すべて 1 か所からデプロイできます。

Red Hat OpenShift product logo

場所や規模を問わず、コンテナを作成、デプロイ、管理できます。

クラウドについてさらに詳しく知る