這篇整理一個已經能跑的服務,在流量與業務長大之後會依序撞上哪些限制、每一種限制要補哪一塊能力,以及 Backend 教材裡對應的章節。範圍從一臺機器開始,到多區域、多服務為止;還沒把服務做出來的讀者,先走閱讀路線裡「沒部署過服務」或「API 到資料流」那兩條。

架構調整的時機與架構撞到限制的訊號

服務的架構會長出新的部分,是因為現有的形狀承受不了某一種壓力,而那種壓力在監控或使用者回報裡有一個可辨認的樣子,本篇稱它為架構撞到限制的訊號:單一服務承載不了業務分化、單機規格撞到天花板、應用層的查詢變慢、單一資料庫成為瓶頸、源站被流量打爆、同步呼叫卡住整條交易流程、可預期的活動高峰需要事前準備。

所以這一組章節的讀法是先認出手上是哪一種訊號,再讀那一種訊號對應的能力,而不是照模組編號順讀。同一個訊號過早處理,付的是用不到的複雜度;過晚處理,付的是事故。

這條路線和閱讀路線裡的「API 到資料流」分工不同:那一條教怎麼把功能做出來,這一條教做出來之後怎麼撐住。兩條可以分開讀,也可以寫完第一個 MVP 之後回到這一篇盤點。MVP 如果是用託管平台或 BaaS 做的,先用 0.21 交付形態選型:從全託管到自建的光譜與邊界 的升級自建 tripwire 判斷該不該啟動自建評估;評估成立的話,遷出的執行在 10.3 託管形態遷出:資產線盤點與並行期執行,遷入之後再照下面的訊號走。

各種架構撞到限制的訊號與要補的能力

架構撞到限制的訊號要補的能力對應章節
一臺機器的 CPU 或記憶體吃滿評估垂直或水平擴展,確認服務是 stateless9.13 擴展軸與 Stateless 前提
資料庫變慢,加機器看起來只是暫時止血先用查詢反模式清單收回單機容量,再考慮升級規格或換服務1.13 應用層查詢反模式與 Query 預算
資料庫寫入正常,但讀取把主庫壓垮開 read replica,應用層配讀寫路由,並加快取1.1 高併發下的 SQL 讀寫邊界、2.2 cache aside 與失效策略
活動或引流時,源站被靜態資源請求打爆把靜態與半靜態內容放到邊緣層,保護源站5.9 邊緣分發與靜態資源(CDN / Origin Protection)
同步呼叫卡住交易流程,付款與通知互相阻塞拆成事件、非同步化,加上冪等訊息佇列與事件傳遞模組
業務分化,團隊之間的發版互相阻擋沿真實的邊界拆服務(資料、團隊、部署或流量)10.1 服務拆分與邊界判讀

表格由上往下大致是一個服務撞到這些訊號的常見先後,而先後不是固定的:有的團隊在單機容量用完之前就先拆服務,有的團隊一直不需要拆。源站被打爆之後如果還要應付可預期的活動高峰(雙 11、新片上線、推廣活動),加讀 9.11 高峰事件準備;平日的容量規劃在 9.6 容量規劃模型。

規模成長路線從頭讀的章節順序

要把整條路線從頭讀一次,順序是:0.21 交付形態選型:從全託管到自建的光譜與邊界的升級 tripwire → 0.0 後端需求分類地圖 → 10.3 託管形態遷出:資產線盤點與並行期執行(從託管平台出身的服務才需要)→ 10.1 服務拆分與邊界判讀 → 9.13 擴展軸與 Stateless 前提 → 1.13 應用層查詢反模式與 Query 預算 → 1.1 高併發下的 SQL 讀寫邊界 → 2.2 cache aside 與失效策略 → 5.9 邊緣分發與靜態資源(CDN / Origin Protection) → 訊息佇列與事件傳遞模組 → 9.11 高峰事件準備。

這個順序把判斷放在動手之前:先確認要不要自建、需求屬於哪一類、邊界在哪裡,再依擴展、查詢、讀取、邊緣、非同步、高峰的次序補能力。各篇結尾的「規模成長路線下一站」指的就是這個順序裡的下一篇。

入門影片用詞與 Backend 教材章節的對照

講 SaaS 擴展的入門影片常用生活比喻解釋這些概念(把快取說成保溫桶、把 CDN 說成物料配送)。比喻傳達的是形狀,操作時需要的是工程術語與判斷條件,下表把常見的影片用詞接到對應的章節:

影片用詞對應章節
Scale up / Scale out9.13 擴展軸與 Stateless 前提
CDN、邊緣節點、物料配送5.9 邊緣分發與靜態資源(CDN / Origin Protection)
微服務、拆分10.1 服務拆分與邊界判讀
Read replica、主從複製1.1 高併發下的 SQL 讀寫邊界,以及 9.13 擴展軸與 Stateless 前提裡講有狀態服務的那一段
快取、保溫桶快取與 Redis 模組
Queue、Rate limiter訊息佇列與事件傳遞模組、9.11 高峰事件準備
索引、N+1、倉庫整理1.13 應用層查詢反模式與 Query 預算
雲端服務(RDS / ECS / S3)0.19 雲端服務對照地圖(AWS / GCP / Azure)