結論先講

壓測最有價值的產出不是數字,是判斷力。 蓋完平台、跑完 42 項測試、寫完 30 篇文章之後,我做技術決策的方式徹底改變了。不是因為記住了「Go 74 RPS、Spring Boot 228 RPS」這些數字,而是因為學會了「先測再決定」「免費午餐先吃」「不要被排名騙」這些思維方式。


五個改變我做決策方式的 Insight

1. 免費午餐比換框架效果大

這是整個系列最重要的一句話。

Redis cache + nginx keepalive + multi-worker,三個配置層面的改動,組合起來 13 倍提升第 21 篇)。同時期「從 Django 換成 Go」的提升大概 4-5 倍。

先把免費午餐吃完,再考慮換框架。 大部分團隊的效能問題不是選錯框架,而是沒做這三件事。

如果重來一次,我會在動任何架構之前,先確認:

  • Redis cache 開了嗎?
  • nginx keepalive 開了嗎?
  • 多 worker 模式開了嗎?
  • DB 連線池調過了嗎?

2. UV 10 就能暴露問題

不需要等到「百萬用戶」才做壓測。UV 10 就能告訴你系統有沒有結構性問題(第 28 篇)。

Django 在 2 CPU 上 UV 10 就開始出問題。不是 Django 的 bug,是 gunicorn + bcrypt 在 2 CPU 上的結構性限制。給 4 CPU 就沒問題了。

如果重來一次,我會在第一天就跑一次 UV 10 的壓測。不用花很多時間——一個簡單的 k6 腳本 5 分鐘就寫好(第 4 篇)。

3. 場景不同,排名不同

Go 在 CRUD 場景排第一(第 9 篇),Spring Boot 在混合場景排第一(第 24 篇),兩者在檔案上傳場景並列第一(第 25 篇)。

沒有「最好的框架」,只有「最適合你場景的框架」。

如果重來一次,我會先定義「我的應用長什麼樣」(讀多?寫多?有 Auth?有檔案上傳?),然後找最接近的壓測場景看排名。而不是看一個 Hello World benchmark 就下結論。

4. 選框架先問三個問題

效能排名只是參考。真正影響決策的三個問題(第 23 篇):

  1. 團隊會什麼語言?(招得到人嗎?學習成本多高?)
  2. 硬體預算多少 CPU?(Django 2 CPU 撐 50 人,4 CPU 撐 200 人)
  3. 需要什麼生態?(Python ML / Java 企業 / JS 全端)

如果重來一次,我會先回答這三個問題,再去看壓測數字。不是反過來。

5. 不要急著拆微服務

第 28 篇 講了我們為什麼拆。但如果重來一次,我會先做完免費午餐,看看是不是能把單體撐到 UV 100-500。

拆微服務的成本:

  • Event-driven architecture 的設計和實作
  • 跨服務 transaction 的處理
  • 監控和 log 的複雜度(GitLab + Grafana + Portainer)
  • 每個 service 的個別調校

這些成本在 UV 100 以下很可能不值得。

拆微服務的正確時機不是「學到了就要用」,而是「單體 + 免費午餐已經撐不住了」。


最意外的五個發現

發現篇章為什麼意外
Django/FastAPI UV 10 就能壞[[micro-service/09-crud-overview|#9]]以為至少 100 才會出問題
Spring Boot 從倒數第二變第一[[micro-service/24-mixed-overview|#24]]CRUD benchmark 騙了所有人
ORM vs Raw SQL 只差 10%[[micro-service/18-db-bulk-and-index|#18]]以為至少差 50%
Bulk Insert 差 26 倍[[micro-service/18-db-bulk-and-index|#18]]比選 ORM 影響大得多
前端框架差距只有 6 分[[micro-service/15-f2e-lighthouse-ranking|#15]]以為 Svelte 會贏很多

給正在考慮微服務的人

先做的事(成本低、效果大)

  1. 跑一次 UV 10 的壓測(5 分鐘)
  2. 開 Redis cache(讀多場景 +6.5 倍)
  3. 開 nginx keepalive(一行配置 +7%)
  4. 開多 worker(一行配置 +93%)
  5. 調 DB 連線池(pool=50 高壓下 +70%)

再考慮的事(成本高、效果看場景)

  1. 拆微服務(需要 event-driven + 跨服務 transaction)
  2. 換框架(確認場景和壓測排名吻合)
  3. 換 DB(PG vs MySQL 看讀寫比)
  4. 上 K8s(1000 人以內 Docker Compose 就夠了,第 22 篇

不要做的事

  • 不要看 Hello World benchmark 選框架
  • 不要加 cache 但不知道瓶頸在哪
  • 不要把 Kafka 當 REST API 用(第 29 篇
  • 不要為了 Lighthouse 6 分的差距換前端框架
  • 不要在 UV 100 以下急著拆微服務

這個系列的完整地圖

30 篇走完,回到 第 1 篇 的起點——「功能測試回答『能不能動』,壓力測試回答『能撐多少人』」。

現在你有了完整的答案:

  • 前端([[micro-service/15-f2e-lighthouse-ranking|#15-16]]):差距 6 分,看生態不看分數
  • 後端([[micro-service/09-crud-overview|#9-14]], [[micro-service/24-mixed-overview|#24-27]]):Go 最穩、Spring Boot 讀取最強、Express-TS 是安全牌
  • DB([[micro-service/17-db-pg-vs-mysql|#17-19]]):PG 通用、MySQL 寫入、Bulk 比 ORM 影響大
  • Storage([[micro-service/20-storage-redis-es|#20]]):PG + Redis 夠用,需要再加
  • Infra([[micro-service/21-infra-free-lunch|#21-22]]):免費午餐先吃、水平擴展要算 DB 連線
  • 容量規劃([[micro-service/23-cross-layer-capacity|#23]]):10 人到 5000 人的完整選型表
  • 微服務([[micro-service/28-monolith-to-microservice|#28-29]]):遲早要做,但不要急

感謝你讀到這裡。


下一篇

PostgreSQL vs MySQL 完整選型 — 主系列到此結束。接下來是延伸系列——把壓測中發現的每個重要議題拉出來深入討論,從 DB 選型開始。


本系列文章

完整 68 篇目錄見 系列首頁

← 上一篇:企業裡的微服務現實:Cache 硬撐、Kafka 當 REST 用 → 下一篇:PostgreSQL vs MySQL 完整選型:不只是效能,是生態和未來