

我們最近在幫一家做雲端排程 SaaS 的客戶做架構盤點時,遇到一個很典型的場景——他們去年用最快的方式把 MVP 推上線、現在每個月增 8 到 12 個客戶,到第 47 個客戶接洽要簽兩年約時,對方法務丟回一條問題:「請說明你們的 multi-tenant 資料隔離模式,是 schema-per-tenant 還是 row-level?」。創辦人愣了三秒,回我們訊息:「等等,這題我不知道怎麼答。」
這不是個案。過去半年我們經手的客製化 SaaS 評估,有八成以上的早期創辦人對「多租戶架構」三個字停在「就是大家共用一個系統」的模糊理解——但實際打開資料庫看,租戶之間的隔離是用 application 層 WHERE tenant_id 過濾,沒有 Row-Level Security、沒有 schema 切分、連備份還原都會把所有客戶資料一起翻出來。等到簽企業客戶、走資安問卷、過 SOC 2,那一刻才發現要砍掉重做的代價是六到九個月研發時間。
這篇要把客製化 SaaS 多租戶架構這道題講清楚——3 種主流隔離模式(單庫共表 + RLS、單庫多 schema、多庫多實例)的取捨點、5 個我們實際在案子裡踩到的雷、3 條成本曲線分歧點怎麼算,以及給中小企業 SaaS 老闆一張早期決策框架。先講結論:根據 AWS SaaS Factory 架構白皮書,多租戶 SaaS 在 50 個客戶以下時三種模式的維運成本差距不大,但跨過 200 客戶後,pool(單庫共表)模式的單客成本可以是 silo(多庫多實例)的 1/8——架構選錯,到 200 客戶那一刻你的毛利會被基礎建設吃掉一半。
先把名詞講清楚:multi-tenant、isolation、tenant-aware 三層概念
「多租戶」這個詞被濫用到很多老闆以為自己懂——但實務上要把三層概念分清楚:租戶模型(multi-tenant 還是 single-tenant)、資料隔離模式(pool / bridge / silo)、資源隔離模式(共用 compute 還是獨立 compute)。同一套 SaaS 可以是「多租戶租戶模型 + silo 資料隔離 + 共用 compute」——這在金融客戶要求資料分庫但又不想付獨立 EC2 的場景很常見。混淆這三層的後果是:跟工程廠商溝通時你說「我要 multi-tenant」,他理解成 pool 模式,結果交付的系統一進金融客戶就過不了資安問卷。
我們的判斷是:中小企業 SaaS 早期(< 100 客戶)幾乎都應該從 bridge(單庫多 schema)起步,pool 模式在後期客戶分層收費時太死、silo 模式在前期成本太貴;bridge 是少數能讓你在「客戶量從 10 漲到 500」這條路上不用砍掉重練的中間解。這跟 Microsoft Azure 的 multi-tenant 指南結論一致——他們把這條叫做「Database-per-tenant」模式,並標註「適用於成長期 SaaS、客戶數中等、需要明確隔離但又想集中維運」。

3 種主流資料隔離模式:pool / bridge / silo 完整對比
以下是我們把 3 種模式整理成的一張對照表,從技術實作、客戶上限、單客邊際成本、合規難度、客戶遷出成本五個維度比較。中小企業 SaaS 老闆挑選型時,把這張表印出來、把自己「未來 18 個月會接的客戶類型」對進去,答案大概就出來了。
維度 | Pool(單庫共表 + RLS) | Bridge(單庫多 schema) | Silo(多庫多實例) |
|---|---|---|---|
資料隔離 | 邏輯層(tenant_id + RLS policy) | Schema 層(每租戶獨立 schema) | 實體層(每租戶獨立 DB) |
適用客戶量 | 500+,主打輕量 SMB | 10–500,成長期 SaaS 主流 | < 100,金融/醫療/政府 |
單客邊際成本 | 最低(1/10 區間) | 中(1/3 區間) | 最高(基準 1) |
合規難度 | 高(要證明 RLS 沒漏) | 中(schema 隔離較好說) | 低(物理隔離天然合規) |
客戶遷出成本 | 最高(要 export 篩選) | 中(schema dump 還原) | 最低(整個 DB 給他) |
Schema 演進 | 一次改全部 | 可分批 rollout | 可按客戶滾動 |
Pool 模式:適合 SMB 工具型 SaaS、客戶數要衝量
Pool 的核心是「所有客戶共用同一張表,靠 tenant_id 欄位 + Row-Level Security 區隔」。優點是單客成本可以壓到極低(Notion、Linear 早期都走這條),但缺點是「一筆 SQL 寫錯漏了 WHERE tenant_id」就會跨租戶撈資料——而且這種 bug 通常要到客戶看到別人資料才會爆。實作時務必配 Postgres RLS policy 強制 enforce,不能只靠 ORM 層過濾。
Bridge 模式:成長期最划算、我們的預設推薦
Bridge 是「每個租戶一個 schema、共用一個 DB instance」。優點是 schema 級隔離天然把 tenant_id 寫死、合規容易說、schema migration 可以分批做(先在 5 個 schema 上跑驗證再 rollout 給全體)。缺點是 schema 數量到 500+ 後,PostgreSQL 的 catalog 會開始拖累 query plan——這是我們在實際案子裡到 320 個 schema 那一刻才注意到的拐點,需要做 schema 分群 + 多 DB cluster。
Silo 模式:金融/政府/醫療合規場景、毛利要算清楚
Silo 是「每個租戶一個獨立 DB 甚至獨立 VPC」。物理隔離最強、合規最容易過、但單客邊際成本是 pool 的 8-10 倍。我們建議:除非你的客戶單合約年費 ≥ 50 萬台幣,否則走 silo 模式毛利會被吃掉一半;如果客戶要求 silo 但合約金額撐不起,可以做「silo at DB level + pool at compute level」的折衷——資料庫獨立但 K8s pod 共用。
5 個我們實際踩過的多租戶架構雷點
以下五條是我們陪客戶實際做 SaaS 架構評估時,反覆遇到的踩雷點。每一條的代價都在六位數研發工時起跳——早期決策時把這五條檢查一遍,可以省下後期 80% 的重構成本。
- 雷 1:用 application 層 WHERE 過濾當 isolation。這是「能跑起來但不能上企業客戶」的最大來源——一個 SQL 漏 WHERE 就跨租戶。永遠要配 Postgres RLS / MySQL VIEW 強制,不要相信 ORM。
- 雷 2:認證 token 沒綁 tenant_id。JWT 裡只有 user_id 沒有 tenant_id,導致使用者切換工作區時整個權限模型崩塌。Token 簽發那一刻就要把 tenant 綁進去。
- 雷 3:背景 job 沒帶 tenant context。Celery / Sidekiq queue worker 跑批次時忘了傳 tenant_id,結果 A 客戶的排程 job 去動到 B 客戶的資料。每個 queue message 都要強制塞 tenant_id。
- 雷 4:分析平台共用一張表沒區分。把所有客戶的 event log 倒進同一張 Postgres 表,做客戶儀表板時忘了濾 tenant_id,客戶在自己後台看到別家公司的數據。Event ingestion 必須在 source 就分流。
- 雷 5:備份 / 還原沒按 tenant 切。整庫 dump、整庫 restore——出事要還原單一客戶要花 8 小時 + 影響全平台。早期就要設計 per-tenant export / restore SOP,不然 SLA 寫不出來。
ℹ️我們自己就在用 bridge 模式跑客製化 SaaS
恆遠的秒發報價系統(quotation.foreverwebs.com)內部就是 bridge 模式跑——每個企業客戶一個 PostgreSQL schema、共用同一個 RDS instance,從 12 個客戶長到 80+ 客戶沒做架構大改。我們做客製化 SaaS 接案時也預設推 bridge:客戶接早期到中期都不用改架構,等真的衝過 300 客戶再評估要不要切到 silo + shard。想看實際落地的案例,可以看 /portfolio/ferrous-quoting-system 跟 /portfolio/sas-tradetalk 兩個。

3 條成本分歧曲線:你的 SaaS 在哪一點要重新評估架構
中小企業 SaaS 老闆最常問的問題是「我什麼時候要動架構」——這題不能用直覺答,要看三條曲線。我們把它整理成這張對照:
曲線拐點 | 徵兆 | 建議動作 |
|---|---|---|
客戶數 50 | 資安問卷開始問 RLS / isolation | 從 application-level 過濾切到 DB RLS / schema-per-tenant |
客戶數 200 | 單客成本占毛利 > 30% | 評估 pool 化、共用 compute、優化索引 |
客戶數 500 | Schema 數拖慢 catalog query / DB 寫入 IOPS 飽和 | Sharding 切群、cluster 分群、考慮 multi-region |
多租戶 SaaS 架構不要用快速 MVP 的方式賭
多租戶架構是 SaaS 的「基底決策」——MVP 階段可以省的東西很多,但 isolation 這條不能省。我們在客製化 SaaS 接案的前期評估會議裡,永遠把「未來 24 個月會接的客戶類型」放在第一張白板上問:如果有任何一個會走金融 / 醫療 / 政府合規,那 bridge 是最低標、不能走 pool;如果客戶單合約年費 ≥ 50 萬,可以提早規劃 silo at DB level;如果只是 SMB 工具、客戶不會問 SOC 2,pool 模式可以衝量到 500+。架構這題不能補考——選錯要砍掉重練。
想要我們幫你做客製化 SaaS 的多租戶架構評估,可以從 客製化 SaaS 開發服務頁 預約半小時諮詢,我們會帶你把目標客戶類型、合規門檻、客戶量預估走過一遍,給你一張 18 個月的架構升級路徑圖。
ℹ️我們怎麼看:multi-tenant 是「客戶獲取成本」的隱性槓桿
未來 3 年我們判斷 SaaS 多租戶這題會往兩個方向分化——大客戶端走 silo + 主權雲(資料留台)、SMB 端往 pool + serverless 收斂。中小企業 SaaS 老闆要問的不是「我要哪一種」,而是「我未來 18 個月的客戶混合(SMB vs 企業)長什麼樣」——客戶混合決定架構,反過來不成立。一個給讀者的判斷工具:問你自己「下一筆 100 萬合約如果要簽,我能不能 14 天內證明資料隔離有做」——答得出來就是 bridge 以上,答不出來就還在 pool 危險區。
Q客製化 SaaS 早期一定要做 multi-tenant 嗎?
是。Single-tenant SaaS(每個客戶一個獨立部署)在客戶到第 5 個後維運成本就會爆——光是 schema migration 要部署 5 次、上版要排 5 次。Multi-tenant 是 SaaS 的預設,single-tenant 只在「客戶要求物理隔離且願意付溢價」時使用。
QPool 模式怎麼避免 SQL 漏 WHERE 跨租戶?
一定要在 DB 層用 Postgres Row-Level Security policy 強制 enforce,不能只靠 ORM 過濾。每次 connection 在 SET app.current_tenant_id 之後,所有 query 都會自動套上 policy 條件,application 層忘了寫 WHERE 也撈不到別人資料。
QBridge 模式 schema 數量會不會拖慢 PostgreSQL?
會,但拐點在 300-500 schema 之間。早期完全不用擔心。到拐點時做兩件事:把 schema 分群(按客戶區域或客戶等級分到不同 DB cluster)、減少不必要的 schema-level object(每個 schema 不要塞 200 張表)。
Q客戶要求資料留在台灣怎麼辦?
這題在多租戶架構下要區分兩種解法:bridge 模式可以做「每個 region 一個 DB cluster + cross-region tenant routing」,客戶按國別自動路由到對應 region;silo 模式直接給客戶獨立 DB 部署在指定 region。預算夠走 silo,預算緊走 bridge + region routing。
Q中小企業 SaaS 怎麼判斷架構要不要動?
看三個訊號:1) 客戶開始問資安問卷 / RLS 細節(→ 從 application 過濾升到 DB-level isolation);2) 單客邊際成本超過毛利 30%(→ pool 化或共用 compute);3) DB 寫入 IOPS 飽和(→ sharding 或 cluster 分群)。三條任一條觸發就要排架構評估。
AUTHOR
自由揚John
想了解更多?看看我們的相關服務
相關文章

客戶 Onboarding / 啟用系統採購完整指南:Userlane / Pendo / Userflow / 自架 4 條路徑 — SaaS 老闆 6 個決策、5 條合約紅線、3 個報價區間
中小企業客戶反饋 NPS SaaS 採購完整指南:Typeform / SurveyMonkey / Qualtrics / Hotjar / 自架 4 條路徑、5 個落地踩雷、3 個報價區間

Text-to-SQL 中小企業 BI 採購完整指南:老闆自己查、不再排隊等資料工程師的 5 條 LLM 路徑與 4 個治理風險

客戶流失預測(Customer Churn)AI 系統完整指南:4 條模型路徑、5 條觸發訊號、3 個 ROI 試算框架——中小企業老闆從「救單」到「主動預防」的決策手冊

中小企業老闆 AI 工具堆疊(AI Sprawl)治理完整指南:5 個盤點訊號、4 條合併路徑、3 個老闆每季審視框架

留言(0)
尚無留言,成為第一個留言的人吧!