【まるちてなんと】

マルチテナント とは?

💡 1つのビルに複数の会社が「間借り」する
📌 このページのポイント
シングルテナント vs マルチテナント シングルテナント 企業A専用 アプリ DB インフラ 企業B専用 アプリ DB インフラ 各社が専用環境を持つ コスト高・カスタマイズ自由 マルチテナント 共有インフラ 共有アプリケーション 企業A 企業B 企業C データは論理的に分離 共有インフラ 1つの環境を複数社で共有 コスト低・スケール容易 多くのSaaSはマルチテナント方式を採用 (Gmail、Slack、Salesforce など)
マルチテナントアーキテクチャのイメージ
ひよこ ひよこ

シングルテナントとの違いは?

ペンギン先生 ペンギン先生

シングルテナントは顧客ごとに専用の環境(サーバ、DB)を用意する。マルチテナントは1つの環境を複数の顧客で共有する。シングルテナントは「一戸建て」、マルチテナントは「マンション」だね。マルチテナントの方がコスト効率は高いけど、データ分離の設計が難しいんだ

ひよこ ひよこ

データが他の会社に見えちゃわない?

ペンギン先生 ペンギン先生

絶対に見えないように設計するのがマルチテナントの最重要課題だよ。すべてのクエリにテナントIDの条件を付ける、Row Level Security(行レベルセキュリティ)を使う、アプリケーション層でテナント間のアクセス制御を徹底する、などの対策を多層的に実施するんだ

ひよこ ひよこ

データベースはどう分ける?

ペンギン先生 ペンギン先生

3パターンあるよ。①共有DB・共有スキーマ(テナントIDカラムで分離。最もコスト効率が高い)、②共有DB・専用スキーマ(テナントごとにスキーマを分離)、③専用DB(テナントごとに別DB。最も安全だがコスト高)。セキュリティ要件とコストのバランスで選択するんだ

ひよこ ひよこ

「ノイジーネイバー問題」って?

ペンギン先生 ペンギン先生

マルチテナントで1つのテナントが大量のリクエストを発生させると、同じ環境の他のテナントのパフォーマンスが低下する問題だよ。「隣の部屋がうるさい」のと同じ。レート制限、リソースの公平な配分(フェアスケジューリング)、テナントごとのリソースクォータで対策するんだ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「マルチテナント」って出てきたら「1つのシステムを複数の顧客で共有する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Multi-Tenant」 = 複数借用者
💬 Tenant(借用者・テナント)が複数(Multi)。賃貸ビルの各フロアに異なる会社が入居しているイメージだよ
← 用語集にもどる