

マルチテナントサイトを作成しています。

たとえば以下のサイトではURLにテナントIDを含めて、テナントごとに異なるURLとなるようにしていますが、このようにする理由がよくわかりません。
メリットやデメリットを教えてください。

[code]

    /survey/adatum
    /survey/fabrikam
    
[/code]

<http://msdn.microsoft.com/ja-jp/library/ff966483.aspx>

作成中のサイトは

  * テナントごとに同一スキーマを使用します。
  * 各テーブルにUserIDカラムを設けてデータを分離します。
  * テナントごとに大きなカスタマイズを行う予定はありません。


CC BY-SA 3.0
2014-12-16T00:45:36.597
1613
2014-12-16T09:46:07.920
2228
question
c# asp.net
マルチテナントサイトでURLにテナントIDを含めるメリットはなんですか？


ぱっと思いつくメリットとしては

  * 単純にアプリが書きやすい（こともある）
  * ユーザが自分のテナントのコンテンツを見てるのが分かって安心する
  * テナント毎にカスタマイズしたCSSやJSを静的に配備しやすい
  * 負荷が異様に高いテナントのサーバ（クラスタ郡）をLBで一気に移動しやすい

といったところでしょうか。

デメリットは下記くらいしか思いつきません（笑）

  * テナントのURLを予測されやすい（けど大した問題ではナサソウ）
  * URLが気に入らないと言われた時に変える作業が大変かも
  * プログラムや配備ミスで間違ったCSSやJSを配備してしまう恐れが高くなるかも

他の方の意見も聞きたいですね。


CC BY-SA 3.0
2014-12-16T01:33:20.290
1619
2014-12-16T01:33:20.290
499
1613
answer


メリットとしては URL の覚えやすさや、テナントを識別できるという点ぐらいだと思います。URL
に必ずしもテナント名を含める必要はないですが、数字よりはわかりやすいと思います。

デメリットとしては、このサンプルでは ASP.NET の URL
ルーティングを使っているみたいですし、カスタマイズ性を意識しているわけではない点かと。逆に個別のカスタマイズは手間がかかりそうです。


CC BY-SA 3.0
2014-12-16T03:08:05.390
1647
2014-12-16T03:08:05.390
2743
1613
answer


URLにテナント情報を含めない場合にはセッションにテナント情報を格納することになると思います。

そうすると同一ブラウザで複数のテナントに同時にアクセスできないという不具合が生じてしまいます。セッションに格納するテナント情報は一つであるにもかかわらず、２つのテナントにあくせすしてしまうからです。

Ajaxなどを使うと整合性の取れない情報があたかも正規のデータかのように表示されてしまう可能性もあります。

社内システムで、運用でカバーするんです。というのであれば構わないと思いますが、どういう使われ方をするのかわからないようなシステムはなるべく変更される状態を持たないように設計すべきです。


CC BY-SA 3.0
2014-12-16T09:46:07.920
1731
2014-12-16T09:46:07.920
2298
1613
answer