質問: マルチテナントサイトを作成しています。 たとえば以下のサイトではURLにテナントIDを含めて、テナントごとに異なるURLとなるようにしていますが、このようにする理由がよくわかりません。 メリットやデメリットを教えてください。 ``` /survey/adatum /survey/fabrikam ``` 作成中のサイトは * テナントごとに同一スキーマを使用します。 * 各テーブルにUserIDカラムを設けてデータを分離します。 * テナントごとに大きなカスタマイズを行う予定はありません。
回答: URLにテナント情報を含めない場合にはセッションにテナント情報を格納することになると思います。 そうすると同一ブラウザで複数のテナントに同時にアクセスできないという不具合が生じてしまいます。セッションに格納するテナント情報は一つであるにもかかわらず、2つのテナントにあくせすしてしまうからです。 Ajaxなどを使うと整合性の取れない情報があたかも正規のデータかのように表示されてしまう可能性もあります。 社内システムで、運用でカバーするんです。というのであれば構わないと思いますが、どういう使われ方をするのかわからないようなシステムはなるべく変更される状態を持たないように設計すべきです。