能力級買 vs 建的核心原則是:交付形態 gate 決定整個系統要不要自建之後、每一塊非核心能力仍各自是一次獨立的買 vs 建決策。0.21 交付形態選型 把「整包該不該自建」篩過一輪、留下決定自建核心的團隊;但自建核心不等於每塊能力都要自己寫 — 認證、搜尋、金流、Email、表單蒐集、檔案儲存、後台操作介面這些非差異化能力、預設先問「能不能買現成的」。決策單位是能力、不是系統;真實系統是逐能力混搭、核心自建、周邊外包。

本章目標

讀完本章後、讀者能夠:

  1. 把「買 vs 建」的判斷單位從整個系統下降到單一能力
  2. 辨識三種外包深度(managed 基礎設施、feature SaaS、BaaS bundle)與 no-code 到 dev-tool 的服務光譜
  3. 用 commodity、合規、長尾成本與團隊規模判斷一塊能力該買還是該建
  4. 算清外包的隱性帳:整合接縫、鎖定、遷出代價、以及權重如何隨情境浮動

【判讀】先確認該不該讀這章

本章預設讀者已經過了 0.21 的 whole-system gate、決定自建核心。在那之前有一種讀者該先被擋下來:非工程師、目的是解自己的生活痛點或做第一個 MVP 的人。對這種讀者、0.21 已經把答案給完了 — 用 BaaS(Supabase、Firebase)就是對的起點、本章的逐能力拆解反而是過度工程。免費額度對個人專案通常夠用、BaaS 連後端與資料庫的串接、效能調教、資源調配一起省掉、把這些當成「之後真的撞牆再說」的問題、是這個尺度最誠實的選擇。

常見的誤判是把選型問題問錯層。「我該選什麼資料庫」這個提問、對非工程師多半真正的答案在 0.21(這個尺度根本不必自己管資料庫)、不在本章。下表把提問者的身分對應到該回的章節:

提問者情境真正該回的章節
非工程師、解個人痛點、第一個 MVP0.21 — 用 BaaS、本章不必細讀
已決定自建核心、要逐塊判斷哪些能力外包本章
已長期自建、某塊外包能力撐不住要搬回自建本章 §「什麼訊號指向『自建或搬離』」+ 10.3 託管遷出

第一列展開說明:判斷自己是不是這種讀者、看「撞牆之後誰來修」。個人專案撞到 Supabase 免費額度上限時、升級付費方案或匯出資料換平台都是幾小時的事、不需要先把架構拆乾淨。把工程資源花在「現在還沒發生的擴展問題」上、是把 0.6 成本、風險與選型取捨 講的機會成本花在錯的地方。確定自己是要自建核心、且周邊有多塊能力要逐一決定買或建、再往下讀。

【判讀】三種外包深度與 no-code 到 dev-tool 光譜

外包一塊能力有深度之分、不是非黑即白的二元動作(見 Capability Outsourcing Depth 卡片)。同樣是「不自己寫」、把維運交出去跟把整塊能力連業務邏輯一起交出去、控制權與遷出代價差一個量級。下面這三層講的是把能力交給雲端託管側時、交出多少 — 自架 OSS 或買 on-prem 授權、只租控制平面的自管形態是另一條平行軸(鎖定點在運維 know-how 與授權、不在 vendor API)、不收在這三層裡。下表把三種深度分開、每種附代表服務與遷出代價:

外包深度你外包什麼、還擁有什麼dev-tool 代表no-code / low-code 代表遷出代價
managed 基礎設施外包維運、仍擁有 schema、query 與架構Aurora、ElastiCache、Neon低–中
feature SaaS(能力即服務)外包整塊能力與內部業務邏輯、只消費 APIAuth0、Algolia、Stripe、SendGridRagic、SurveyCake、Airtable、Typeform中–高
跨能力 BaaS bundle一個 vendor 一次給多塊能力Supabase、Firebase、Amplify

managed 基礎設施是最淺的外包:vendor 接手備份、修補、failover、擴容、跨區複製、但 schema、query、index、資料模型還是你的。遷出時資料是標準格式、架構是自己畫的、換一家 managed PostgreSQL 主要是搬資料與改連線字串。撞牆時你改得動的邊界很寬 — 慢查詢自己優化、index 自己加、只有底層硬體與維運動作在 vendor 手上。不過「邊界很寬」有前提:受限的 serverless 或內嵌型 managed(沒給 superuser、裝不了 extension 的那種)邊界其實更窄、選之前要確認需要的控制權它給不給。

feature SaaS 把整塊能力連同它的內部業務邏輯一起交出去、你消費的是一組 API 而不是一台機器。買 Auth0 不只是省下跑一台認證伺服器、是把「密碼雜湊策略、MFA、SSO、social login、session 管理」整套交給 vendor、你只接它的 SDK。代價是你改得動的邊界縮到 vendor 開放的擴展點為止 — 它沒給的客製、你做不到、繞過去就是在 vendor 之外再搭一層。遷出代價中到高、因為資料模型與業務規則都沿 vendor 的特性長出來。

選 feature SaaS 真正在賭的、是它的擴展點夠不夠你長出差異化。commodity 能力的多數需求跟同業一樣、買現成就解決;會區分產品的是少數、而那少數得疊在 vendor 之上自己長 — 但要先確認那塊差異化存不存在:有些 commodity(收個款、寄封信)差異化趨近零、整塊就是純買、這條擴展點判準根本不啟動。判準只在「確實有一塊差異化要疊上去」時才是選型核心。能不能疊、看 vendor 把控制權開到哪 — 開 API 讓你改它的排序、規則、把自己的資料接進它的邏輯、差異化長得出來;只開一面設定面板、核心邏輯動不了、一撞到差異化需求就得繞到 vendor 外另建一塊補。所以選的時候除了問「它做不做這塊能力」、更關鍵的是「它讓不讓我在上面長出獨有的那部分」 — 這一題決定它能陪產品走多遠。

跨能力 BaaS bundle 是一個 vendor 同時提供多塊能力、用整合當賣點。它的遷出代價最高、來自多塊能力被同一套整合綁在一起、不在任何單一能力 —— 例如同一組登入身分同時管資料庫、檔案與即時訂閱的權限、搬走其中一塊就要拆開這層共用整合(見下方 bundle 專段)。

這三種深度橫切一條 no-code 到 dev-tool 的光譜、而光譜的兩端服務不同的人。feature SaaS 這一層特別明顯:Auth0、Algolia 是 dev-tool、要寫 code 接 API、客製空間大、但需要工程整合能力;Ragic、SurveyCake、Airtable、Typeform 是 no-code、連 schema 都不必碰、填表就能用、客製天花板通常較低、但起步門檻也低到非工程師能獨立操作。選哪一端不只看「需要哪塊能力」、更看「誰來維護它」。一個沒有工程隊的小團隊、把會員資料放 Ragic、滿意度調查放 SurveyCake、是把維護權留在能自己改的人手上;同樣的能力換成 Auth0 + 自建問卷服務、每次調整都回到工程隊列、對這種團隊反而更貴。

【觀察】什麼訊號指向「買這塊能力」

一塊能力該優先評估外包、訊號集中在「自建不產生競爭優勢、卻要承擔沒有上限的長尾成本」。下表列可觀察訊號與它指向的判斷:

可觀察訊號指向
這塊能力同業要的都一樣、做得再好也不構成差異化commodity 能力、預設先買
合規負擔重且標準化(金流的 PCI、認證的 SSO / SOC2)把合規面交給專做這件事的 vendor
自建後維護成本沒有上限(投遞率、反詐欺、登入方式矩陣)長尾成本型能力、買掉長尾
團隊缺這個領域的專才、或時間壓力不允許自建用 SaaS 換時間、把人力留給核心

commodity 這一列是最常見的買訊號。認證、Email 投遞、金流處理、問卷蒐集、物件儲存 / 檔案 / CDN、後台操作介面(internal tooling)都落在這裡 — 每個產品要的功能幾乎一樣、自己寫一套不會讓產品更有競爭力。後台介面值得特別點出:很多團隊把「完整後台可操作」當成自建理由、但 admin panel 本身是 commodity、Supabase Studio、Retool、Appsmith 這類工具讓你連著資料庫就生出可操作的後台、把工程時間留給真正客製的業務流程。

自己架一台 SMTP 寄 email 看起來簡單、真正的成本藏在 deliverability — SPF、DKIM、DMARC、IP 信譽、退信處理、進垃圾桶的排查、是一條沒有終點的維護線、而 SendGrid 這類服務把這條線變成它的本業。這就是長尾成本最容易被低估的地方:金流的反詐欺、認證的 MFA 與 social login 矩陣同理 — 第一版很快、長期維護吃掉的人力沒有上限。

【觀察】什麼訊號指向「自建或搬離」

外包不是預設終點、有四種訊號會把一塊能力從「買」翻回「建」。這一段是對照、判斷時跟上一段的買訊號一起看、不是讓否定句主導決策:

可觀察訊號指向
這塊能力正是產品的差異化核心自建、控制權要握在自己手上
客製需求持續撞到 SaaS 的擴展點上限外包換來的天花板開始擋路、評估自建
計費隨規模線性成長、自建的 TCO 出現交叉點成本曲線翻轉、重算自建總帳
資料主權或合規要求 SaaS 無法滿足控制面深度超出外包能給的範圍

會把一塊能力翻回自建的訊號裡、差異化核心是最硬的一條。一塊能力如果就是產品賣點 — 推薦引擎之於內容平台、媒合演算法之於媒合服務 — 把它外包等於把競爭力外包、再貴也該自建。但「差異化核心」是最容易拿來自我說服的標籤 — 下手自建前先用買訊號表的 commodity 判準反向驗一次:同業是不是也都這樣做、做得再好客戶會不會無感?會、它其實是偽核心、「再貴也建」不適用。其餘三列是「原本買得對、條件變了該重評」:客製撞牆、成本交叉、合規不滿足、都是把選型結論拿出來重算的 tripwire、而不是一次定生死。觸發後的搬離執行 — 並行期、回切窗口、資產盤點 — 見 10.3 託管形態遷出

【判讀】四個真實例子

例子的責任是建判斷錨點。下面四個刻意走四種不同方向 — 黏合型、買到部分搬離、永遠買、建到改買 — 避免把「逐能力外包」講成單向的故事。

一個親子活動 app 的形狀最能展示「決策單位是能力」。需求包含親子活動預約、室內空間遊玩預約、親職文章分享、會員資料、滿意度調查、線上諮詢。拆開來看:會員資料與空間預約接 Ragic、滿意度調查接 SurveyCake、文章只是連結跳轉、真正需要自建的差異化只有「線上諮詢內容匯整成固定格式檔」這一塊。這個 app 的本質是整合層 — 把幾個 no-code SaaS 黏起來、自己寫的部分極小。資料庫選 Supabase 還是 Neon 在這裡幾乎是次要問題、真正的工程量在「會員資料同時存在 Ragic 跟 app、要不要同步、諮詢內容怎麼流到固定格式檔」這些接縫上。逐能力看、它的決策是「五塊買、一塊建」、不是「選一個資料庫」。

一個成長期的 SaaS 走的是相反路徑的前半段。它早期用 Supabase 全包上線 — Postgres、Auth、Storage、Realtime 一次到位、團隊不必碰後端。業務量上來後、資料層的 query 複雜度與成本超過 Supabase 託管 Postgres 的舒適區、團隊把資料層搬到自管 PostgreSQL、但認證留在 Supabase Auth。這是逐能力遷出的典型 — 只把撞牆的那一塊(資料層)搬走、沒撞牆的(認證)留在原地、整包搬離反而是錯誤思路。

一個自建電商展示「永遠買」的判斷。核心交易流程、商品、訂單、庫存全部自建、因為那是差異化所在。金流則永遠接 Stripe — PCI 合規、反詐欺、各國支付方式是 Stripe 的本業、自建金流要承擔的合規與長尾成本沒有任何回報、因為「能收錢」不構成競爭優勢。這個「永遠買」是對絕大多數團隊的預設、不是無條件鐵律 — 例外要先攔在前面:做受監管清算、金融牌照或資金存管業務的團隊、接 vendor 不會把這些合規責任接走、得回到自己業態的前提判斷、別照抄「金流永遠買」。要分清這裡「買」涵蓋的是哪一層:收單(把一筆卡片交易實際跑完、完成扣款)、卡片資料、PCI 合規、各國支付方式這層、對絕大多數團隊從第一天到規模化都是買、收單就是終點。會翻回自建的是更上層的支付編排(orchestration)。當一家公司同時接多個 PSP(payment service provider,實際完成扣款的金流商、如 Stripe、Adyen)、就需要一層編排決定每筆交易走哪家、哪家失敗換哪家重試、月底跟各家對帳。這層協調的複雜度跨多業務線後超過任何單一 vendor 能給、超大規模下才會把它拿回自己手上;但拿回的是收單之上的協調邏輯、底層的 PCI 與卡片處理仍然外包。對本章設定的讀者、金流買到收單這層就是答案、編排層的自建是規模到了才會出現的 tripwire —— 而多數產品永遠到不了那個規模、orchestration 對它們是不會觸發的分支、不是必經路徑;少數例外是高度監管或特殊清算需求的團隊、小規模就可能直接 direct acquiring(跳過 PSP 直接對接收單行)。

站內搜尋走的是反方向 —— 建到改買。一個內容站初期用自建 Elasticsearch、隨內容成長、維運這套搜尋(叢集調校、相關性排序、同義詞、中文斷詞)吃掉的人力越來越多、而搜尋品質始終追不上專做這件事的服務。團隊把搜尋換成 Algolia — 一塊原本自建的能力、因為長尾運維成本翻轉、改成外包。方向跟前三個都不同、但判準一致:這塊能力的維護成本有沒有回報。

【判讀】跨能力 bundle 的特殊判讀

跨能力 BaaS bundle 難放進以能力分章的結構、因為它一次交付多塊能力。Supabase 同時是 Postgres、Auth、Storage、Realtime 與 Edge Functions、橫跨本系列的 01 資料庫02 快取03 訊息佇列05 部署07 資安。以能力分章的教材、放不下「一個 vendor 給五塊能力」這種形狀、所以 Supabase 在資料庫章節只能當 managed PostgreSQL 比較表裡的一行 — 本章是它在選型層的上層錨點。

bundle 的價值與鎖定同源、都來自整合。同一套認證身分貫穿資料庫的 row-level security、Storage 的存取控制與 Realtime 的訂閱權限、是 bundle 最大的賣點 — 一次設定、多塊能力一致生效、省掉自己接縫的工作。但這份整合反過來就是遷出阻力:搬走任何一塊、都要把它跟其他幾塊的整合關係拆開重接。bundle 的高遷出代價不在資料量、在這些被同一套整合綁住的能力之間。

判讀 bundle 的單位仍然是逐能力。Supabase 不是一個必須整包接受或整包拒絕的決定 — 你可以只用它的 Postgres 當 managed 基礎設施、認證自建或接 Auth0;也可以反過來、資料庫自管、只用 Supabase Auth。問「我需要哪幾塊」「這幾塊的整合值不值得換取遷出代價」、比問「要不要用 Supabase」更準。

這也澄清一個常被混為一談的並列:Supabase 跟 Neon 不在同一個外包深度。Neon 是 managed 基礎設施、純 serverless PostgreSQL、給你一個會自動擴縮的資料庫、其餘能力自理;Supabase 是 BaaS bundle、資料庫只是它的一塊。只需要一個資料庫、兩者都行、Neon 更輕、遷出代價更低;需要認證、儲存、即時同步一起到位、才是 Supabase 的賣點。把它們當同級選項比較、會錯估各自真正交付的範圍。

【權衡】六方向成本與權重隨情境浮動

外包一塊能力的成本帳有六個方向、但這六個方向不是等權的 — 權重隨讀者與規模浮動、用同一張等權表套所有情境會把真正主導的軸攤平。先定權重、再看方向。

MVP 與個人專案主導的是三個方向:免費額度天花板、整合接縫工作量、長大後的鎖定。金流 / PCI 合規與流量穩定性對一個親子活動預約 MVP 近乎無關 — 沒有信用卡資料、沒有尖峰流量 — 但「合規」不能整類劃掉:這個 app 蒐集兒少個資、在多數司法管轄區(COPPA、GDPR-K、台灣個資法)反而是高敏感類別、同意機制與資料存放地點要照規矩走。把金流合規與流量這兩個方向跟其他四個並重討論、只會稀釋真正要看的「免費額度夠不夠、SaaS 黏起來累不累、以後搬不搬得動」。企業與規模化則相反、主導的是合規、流量穩定與計費的線性成長、免費額度天花板根本不在視野裡。

六個方向:

  1. 資安與合規:外包認證把身分攻擊面交給 vendor、對沒有資安人力的團隊是淨收益;代價是 audit log 細度、資料存放地點(落在哪個國家 / 區域)與稽核深度受 vendor 限制、有合規要求的業務可能直接出局。
  2. 流量與穩定性:SaaS 的 rate limit 與 SLA 變成你的天花板、不可協商;vendor 故障時你跟著故障 — 買一塊能力等於接受一個外部單點依賴。這個依賴的極端是 vendor 自己 sunset、倒閉或被併後關停 — 跟「你想走的鎖定」相反、是 vendor 先走、後果不可逆、選有長期生存力的 vendor 是這條的隱性成本。
  3. 伺服器與雲端成本:計費形狀(per-MAU、per-request、per-seat、免費額度上限)決定成本曲線。個人專案看免費額度夠不夠、規模化看線性成長何時跟自建的固定成本加人力出現交叉點。
  4. 人力與操作:外包省下維運、換來 vendor 管理 — SDK 升級、API 變更追蹤、定價政策變動的因應、都是新的操作成本、只是從機房移到供應商關係。
  5. 機會成本:買對、省下的工程時間投到差異化;買錯、付出遷出代價加 vendor lock-in。「以後可能要客製」是最常見的偽自建理由、客製需求真的出現再遷、總成本通常低於提前自建。
  6. 整合接縫成本:每多買一塊 feature SaaS、就多一道接縫 — 資料跨 SaaS 重複(會員同時在 Ragic 跟 app)、跨來源一致性、整合維護。買越多塊、系統的真正複雜度從「每塊能力內部」移到「能力之間的縫」。這是外包換來的隱性帳、跟「省下維運」是同一個決策的反面、評估買 vs 建時要跟省下的成本一起算。

下一步路由