システム開発
マルチテナントSaaSの設計|データ分離・認証・スケールの考え方
複数の顧客企業(テナント)が1つのシステムを共有するSaaSでは、初期の設計判断が後の運用とコストを大きく左右します。本記事では、マルチテナント設計で最初に押さえるべき論点を整理します。
データ分離の3つの方式
- テナントごとに別DB:分離レベルが高く要件の厳しい顧客に向くが、運用とコストが増える
- 共有DB・別スキーマ:分離と効率のバランス型。テナント数が中規模まで扱いやすい
- 共有DB・共有テーブル(テナントIDで識別):最もコスト効率が高いが、漏洩防止の作り込みが必須
どれが正解ということはなく、対象顧客のセキュリティ要件、想定テナント数、運用体制から選びます。後から変更しにくいため、事業計画と合わせて初期に決めるのが重要です。
認証・権限設計
SaaSでは「ユーザーがどのテナントに属し、何を操作できるか」を厳密に制御する必要があります。テナント境界をまたいだアクセスは、設計の穴があると重大な情報漏洩につながります。認証基盤の選定、ロールベースの権限管理、テナントIDの一貫した受け渡しを、アプリ全体で徹底することが欠かせません。
スケールとコストのトレードオフ
テナントが増えると、特定の大口顧客の負荷が他テナントに影響する「ノイジーネイバー問題」が起きます。負荷の分離、データベースの分割(シャーディング)、利用量に応じたプラン設計など、成長フェーズを見据えた打ち手をあらかじめ想定しておくと、急成長時の作り直しを避けられます。
まとめ
マルチテナント設計は、後から変えにくい意思決定が多く、事業の成長性とセキュリティ要件の両面から判断する必要があります。株式会社Aureonでは、SaaSのアーキテクチャ設計から認証・データ基盤、スケール対応まで一貫して支援しています。SaaSの立ち上げや既存サービスの作り直しをご検討の際は、お気軽にご相談ください。
