- マルチテナントWebではSSRのほうが自然に設計できる
- マルチテナントの本質は“ページが人によって違う”こと
- SPAで起きる問題:表示前に大量の情報が必要
- SSRでは「最初から完成した画面」を返せる
- キャッシュ設計とも相性が良い
- セキュリティ面でも有利になる
- ただしSSRにも弱点がある
- SPAのほうが向くケースもある
- どう理解すればよいか
マルチテナントWebではSSRのほうが自然に設計できる
SaaSなどのマルチテナントWebを設計するとき、SPAよりSSRのほうが扱いやすくなる場面が多くあります。
理由は単純で、マルチテナントは「ユーザーごとに別のWebサイトを返す」アプリケーションだからです。
同じURLにアクセスしても、ログインしている企業や契約プランによって画面構成が変わる。
これがマルチテナントの基本的な特徴です。
SSRはリクエスト単位でHTMLを生成します。
つまり「アクセスしたユーザーの情報を見て、返すページを変える」という処理が得意です。
マルチテナントの本質は“ページが人によって違う”こと
例えば管理画面型のSaaSを考えてみます。
同じURLでも次の差が発生します。
| 要素 | 変化内容 |
| ロゴ | 企業ごとに違う |
| メニュー | 契約プランごとに違う |
| 表示項目 | 権限ごとに違う |
| テーマカラー | 企業設定ごとに違う |
つまりマルチテナントとは、単なるログイン機能ではありません。
ページテンプレート自体がユーザーごとに変化するWebです。
ここでSPAとSSRの違いが出ます。
SPAで起きる問題:表示前に大量の情報が必要
SPAはまず共通HTMLを返します。
<div id="app"></div>
その後、JavaScriptがAPIを呼び出し、ユーザー情報を取得してから画面を組み立てます。
つまりSPAでは次の手順になります。
- JSダウンロード
- JS実行
- 認証確認
- テナント情報取得
- メニュー取得
- 画面描画
マルチテナントでは必要なデータが多いため、最初の表示が遅くなりがちです。
特に権限・ロール・設定が複雑なSaaSほど顕著です。
SSRでは「最初から完成した画面」を返せる
SSRではサーバがユーザーを識別してからHTMLを生成します。
<header style="background:#2a6df4"> <img src="/tenantA/logo.png"> </header> <nav> <li>請求書</li> <li>契約管理</li> </nav>
ブラウザは受信直後に表示できます。
追加のAPI呼び出しを待つ必要がありません。
つまりSSRは、
- テナント判定
- 権限判定
- UI構築
をサーバ側で完結できます。
マルチテナントと相性が良い理由はここです。
キャッシュ設計とも相性が良い
もう一つ重要な理由があります。
マルチテナントではキャッシュ戦略が難しくなります。
SPAではAPIレスポンスをキャッシュしますが、テナントごとに内容が違うため再利用しにくくなります。
一方SSRでは、HTMLをテナント単位でキャッシュできます。
例:CDNキャッシュキー
| キー | 意味 |
| /tenantA/dashboard | A社のダッシュボード |
| /tenantB/dashboard | B社のダッシュボード |
これによりサーバ負荷を抑えながら高速表示が可能になります。
セキュリティ面でも有利になる
SPAでは権限チェックの一部がクライアントに残ります。
APIは当然サーバで保護しますが、UI制御はJavaScriptです。
つまり、
- ボタンを非表示にする
- メニューを隠す
といった処理はクライアント依存になります。
実装を誤ると「見えてはいけない操作」が表示される事故が起きます。
SSRではそもそもHTMLを生成しないため、安全側に倒しやすくなります。
ただしSSRにも弱点がある
マルチテナントと相性が良いとはいえ、万能ではありません。
最も大きな問題はサーバ負荷です。
テナントごとにページを生成するため、
- アクセス増加
- 企業数増加
- 機能増加
に比例してCPU負荷が増えます。
ピーク時にレスポンスが急激に悪化することがあります。
特に帳票系SaaSでは顕著です。
SPAのほうが向くケースもある
リアルタイム性が重要な場合はSPAが有利です。
- チャット
- コラボ編集
- ライブ監視画面
これらは常時更新されるため、SSRで毎回レンダリングすると逆効果になります。
どう理解すればよいか
マルチテナントWebの難しさは「ログイン後に別サイトになる」点にあります。
ユーザーによってサイト構造が変わる以上、サーバがUI構築を担当するほうが自然です。
SSRはページを生成する技術というより、リクエストに応じてUIを構成するサーバアプリケーションです。
一方SPAは、共通UIにデータを流し込むクライアントアプリケーションです。
テナントごとに構造が変わるならSSR、
同じ構造でデータだけ変わるならSPA。
この視点で選ぶと、設計の迷いがかなり減るはずです。