Skip to content

新着ガイドビジネスを止めずにレガシーシステムをモダナイズする

アーキテクチャ

B2B SaaSのテナンシーモデルの選び方

共有テーブル、スキーマ分離、データベース分離。そして後から考えを変える方法。

著者
Eryon エンジニアリング
公開日
更新日
読了時間
1 分
会員プランと請求を表示するSaaS管理ダッシュボード

要点

  • 多くのB2Bプロダクトは、共有データベースと行レベルの分離から始めるべき。
  • コンプライアンスや規模が求めるテナントだけを、専用スキーマやデータベースに移す。
  • テナントのコンテキストは、アプリのコードだけでなくデータ層で強制する。
  • テナントごとのエクスポートとバックアップを最初から設計する。

テナンシーは、SaaSプロダクトで後から変えるのが最も難しい判断のひとつです。代表的な3つのモデルの実践的な比較と、選択を左右すべきシグナルを紹介します。

代表的な3つのモデル

マルチテナントのシステムは、通常次の3つのいずれかを使い、それぞれ分離の強さと運用コストのバランスが異なります。

  • 共有データベース・共有テーブル:すべての行にテナントIDを持たせる。運用コストが最も低く、デプロイも簡単だが、既定では分離が最も弱い。
  • 共有データベース・テナントごとのスキーマ:データベース内でテーブルをテナントごとに複製する。分離は強まるが、マイグレーションが複雑になる。
  • テナントごとのデータベース:分離が最も強く、テナント単位のバックアップも容易だが、運用コストが最も高い。

妥当な初期選択

初期のB2Bプロダクトの多くは、すべての行にテナントIDを持つ共有テーブルから始めるのが正解です。インフラが単純に保たれ、課金、分析、サポートなどテナントをまたぐ処理も簡単です。

リスクはフィルターの付け忘れによるデータ漏えいです。これはコードだけでなくデータベースで防ぎます。例えばPostgreSQLの行レベルセキュリティポリシーを使えば、開発者が忘れても、すべてのクエリを現在のテナントに限定できます。

より強い分離が必要になるシグナル

より強い分離は特定の条件が現れたときに価値が出ます。すべてのテナントに適用する必要はほとんどありません。

  • 大企業の顧客が契約で専用ストレージを求めている。
  • 規制で特定地域へのデータ保管が求められる。
  • ひとつのテナントのデータ量が他のテナントの性能に影響している。
  • 顧客が独立したバックアップとリストアを必要としている。

ハイブリッドを前提に計画する

長期的に最も現実的な設計は、複数のモデルを扱えるものです。ほとんどのテナントはインフラを共有し、少数の大規模または規制対象のテナントだけが専用データベースを持ちます。これは、テナントの解決が一か所、通常はリクエストを適切な接続に振り分けるルーティング層で行われている場合にのみ可能です。

最初は常に同じデータベースを返すとしても、このルーティング層を早めに作っておきましょう。今は小さなコストで、後に大きな節約になります。

運用面で重要な細部

テナンシーはスキーマだけの問題ではありません。レート制限、バックグラウンドジョブ、ファイルの保存パス、キャッシュ、ログのすべてにテナントのコンテキストが必要です。データのエクスポートやアカウント削除など顧客向けの機能も同様で、大企業の購買担当者は調達時に必ず確認します。

関連サービスSaaSプロダクト開発課金、オンボーディング、成長の余地を備えたマルチテナント型プロダクト。

参考になりましたか?次の記事をメールで受け取れます。

月に1通。いつでも解除できます。

作る価値のあるプロダクトはありますか?

そのアイデアを、ビジネスで本当に使えるシステムに変えましょう。