本文へスキップ

マルチテナンシー

マルチテナンシーとは、1つのデプロイで、テナントと呼ばれる複数の顧客に共有インフラからサービスを提供しながら、各テナントのデータを論理的に分離しておくソフトウェアアーキテクチャです。1つのアプリケーションインスタンス、データベース、コードベースで多数の組織を同時に扱い、テナント識別子によって顧客ごとのレコードを分けます。

更新日:2分で読めます執筆 fromHello

要点

  1. マルチテナンシーとは、1つのデプロイで、共有インフラ上の分離された多数のテナントにサービスを提供することです。境界はアプリケーションとデータベースの両方で強制します。

  2. 分離には段階があります。テナントキー付きの共有データベース、テナントごとのスキーマ、テナントごとの専用データベース。分離が強いほど運用コストが上がります。

  3. マルチテナントのプラットフォームをセルフホストすれば、テナントの境界を自社で持てます。1つのインストールで、ブランドごとの契約なしに複数のブランドやクライアントのワークスペースを運用できます。

マルチテナンシーはどう機能しますか?

マルチテナントのアプリケーションは、すべてのリクエストとすべてのレコードにテナント識別子を付けます。ユーザーがサインインすると、アプリはそのユーザーがどのテナントに属するかを特定し、以降のクエリ、バックグラウンドジョブ、メッセージをすべてそのテナントの範囲に絞ります。すべてのテナントは同じサーバー、多くの場合は同じデータベースの上で動くため、テナントあたりの運用コストを低く抑えられます。ただし、分離の強さは、それを強制するコードとデータベースの制約の強さで決まります。

主な分離モデルは?

分離モデル仕組みトレードオフ
共有データベースとテナントキーすべての行がテナントIDを持ち、すべてのクエリがそれで絞り込む運用コストが最も安い反面、フィルターを1つ漏らすとテナント間でデータが漏れうる
テナントごとのスキーマ共有データベースの中で、テナントごとに専用のスキーマを持つ分離がより強い反面、マイグレーションがテナント数に比例して増える
テナントごとのデータベーステナントごとに専用のデータベースまたはインスタンスを持つ分離が最も強い反面、コストと運用負荷が最も高い
マルチテナンシーと、隣接する用語との関係。

小さなチームにとってマルチテナンシーはなぜ重要ですか?

1つのブランドで1つの製品を運営しているなら、テナンシーを意識することはないかもしれません。重要になるのは、1つのインストールで複数のブランド、クライアントのワークスペース、環境を扱うようになった瞬間です。代理店や小規模なプラットフォームではよくあるケースです。Dittofeedのようなオープンソースのエンゲージメントツールはテナンシーをワークスペースとして扱います。セルフホストのカスタマーエンゲージメントの構成なら、インストール全体が自社のテナント境界になります。顧客のデータが、社外の誰ともインフラを共有しません。

マルチテナンシーでコンプライアンスはどう変わりますか?

共有型のSaaSでは、自社は何千ものテナントの1つにすぎず、ベンダーの分離、データレジデンシーの選択、契約に頼ることになります。セルフホストではそれが逆転します。自社が運用者になるため、テナントごとの分離、保存期間、監査ログを設定するのも、それを証明するのも自社です。どちらのモデルも、それ自体でコンプライアンスを満たすわけではありません。GDPRの義務は、アーキテクチャではなくデータについて回ります。

FAQ

よくある質問

  • マルチテナントとシングルテナントの違いは何ですか?

    マルチテナントのデプロイは、共有インフラから多数の顧客にサービスを提供し、顧客の間を論理的に分離します。シングルテナントのデプロイは、アプリケーションとデータベースを含むスタック全体を1つの顧客に専用で割り当てます。シングルテナントは、顧客あたりのコストが高いかわりに、より強固な分離と、よりシンプルなコンプライアンスの説明を可能にします。マルチテナントは、分離の深さを一部手放して効率を得ます。

  • マルチテナンシーとは、複数のユーザーがいることと同じですか?

    いいえ。ユーザーは1つのテナントの中にいる人で、テナントは別々の顧客組織です。10,000人のユーザーを抱える2人のスタートアップでもシングルテナントでありえますし、1つのインストールで3社のクライアントを運用する代理店はマルチテナントです。

  • あるテナントが別のテナントのデータを見ることはありますか?

    分離が正しく実装されていれば、ありません。ただしリスクは現実にあります。共有データベースの設計では、絞り込みのないクエリが1つあるだけで境界を越えてしまいます。だからこそ、テナンシーのチェックはアプリケーションのコードだけでなく、行レベルセキュリティやスキーマの分離といったデータ層に置くべきです。

  • スタートアップにマルチテナンシーは必要ですか?

    1つのデプロイで、クライアント、ブランド、ワークスペースなど複数の組織に提供する場合だけです。1社のためにツールをセルフホストするなら、シングルテナントのほうがシンプルです。マルチテナンシーがその複雑さに見合うのは、テナント数の増加が、別々のインストールを運用できる能力を上回るようになってからです。

fromHelloは、オープンソースのマーケティングオートメーションです。

人の行動をきっかけにメッセージを届けます。fromHello Cloudは、ウェイトリスト経由でアーリーアクセスを提供しています。

アーリーアクセス

fromHello Cloud

小さくまとまるために始めたわけではない。

fromHello Cloudのアーリーアクセスは、段階的にご案内します。 オンボーディングは伴走型です。セットアップからコンタクトの移行まで、私たちがお手伝いします。

ご利用の準備が整い次第、メールでお知らせします。スパムは送りません。

まだ登録する段階ではありませんか?GitHubで見る