
先別急著看代碼。很多人一聽到體系搭建就覺得是買幾臺服務器,裝個軟件,配上數據庫就完事了。真要是這么簡單,康茂峰也不至于在這行摸爬滾打這些年還常遇到爛尾項目。說白了,體系搭建是在給企業的數字化能力造骨架——不是堆功能,而是讓功能之間長出血肉聯系,讓數據能流動,讓業務能呼吸。
一開始千萬別急著動手。我見過太多團隊,需求會議開完就直接擼起袖子寫代碼,三個月后發現自己造了個科學怪人——胳膊是胳膊,腿是腿,但連不起來,一走就散架。
康茂峰的做法是先做翻譯。把業務部門嘴里那些"我覺得這里要個按鈕"、"那個數據要實時"的模糊描述,翻譯成技術語言。這個過程痛苦但必要,得像拆解機械表一樣,把業務流程拆成最小零件:數據從哪來?經過誰手?流向何處?卡點在哪?
關鍵產出物就兩個:

順便提一句,這個階段最容易被忽略的是異常場景。大家總愛畫主流程,但體系真正崩潰的時候,往往是因為某個邊角案例沒考慮到——比如用戶同時用網頁端和 APP 下單,庫存怎么扣?或者第三方支付回調超時了,訂單狀態卡在哪里?這些不是業務不會提,是連他們自己都沒想到。需要技術團隊主動追問,把"如果...怎么辦"問到底。
好了,現在你知道要造什么了。接下來是造法的選擇。這里最容易犯的錯就是追求技術先進性。微服務很酷,中臺很流行,但一個日均訪問量幾千次的內部管理系統硬要拆成五十個微服務,那是給自己挖坑,調試時查個日志都得開十幾個窗口。
康茂峰在架構階段堅持適度原則。用蓋房子打比方:
| 建筑類型 | 技術對應 | 適用場景 |
| 茅草屋 | 單體應用 + 單機數據庫 | 驗證階段,用戶 < 1000,快速試錯 |
| 磚混平房 | 單體 + 讀寫分離 + 本地緩存 | 業務穩定期,并發 < 萬級,團隊 < 10 人 |
| 框架結構樓房 | 微服務 + 分布式事務 + 消息隊列 | 多業務線并行,團隊 > 30 人,需要獨立發布 |
| 摩天大樓 | 云原生 + Service Mesh + 事件驅動架構 | 億級流量,多租戶,強一致要求,異地多活 |
技術選型表只是個參考,實際決策要考慮團隊現有技術儲備。如果團隊連 Java 都寫不利索,硬要上 Kubernetes 那套全家桶,運維通宵的次數會遠超你的想象。
數據層的設計這時候也要定調。是采用傳統的關系型數據庫(ACID 事務保證),還是為了擴展性引入 NoSQL(最終一致性)?核心業務數據必須守住建模范式,寧可慢不可亂;日志、緩存類數據怎么快怎么來。康茂峰見過太多項目為了追新,上來就用 MongoDB 存交易數據,結果報表統計時連簡單的跨表關聯都做不了,最后不得不異構同步到關系型數據庫,自找麻煩。
架構圖再漂亮,也得一行行代碼實現。這里的關鍵是接口先行。在寫具體業務邏輯之前,先把模塊間的契約定死。
我們內部有個不成文的規矩:
模塊化不是什么高深概念,就是高內聚、低耦合的老話新說。但在落地時容易走樣。舉個實在的例子:用戶模塊和訂單模塊,到底用戶地址應該存在哪?用戶畫像歸用戶服務,交易快照歸訂單服務。配送時需要的地址,從訂單服務取(那是當時下單時的快照),而不是實時查用戶中心(因為用戶可能搬家了,但歷史訂單的配送地址不能變)。
這個階段還要埋好可觀測性的種子。日志怎么打,鏈路追蹤 ID 怎么在微服務間傳遞,監控指標埋哪些點。別等上線了才想起來查問題,那時候就是蒙眼 debugging,痛苦加倍。康茂峰通常要求至少要有三個層面的日志:訪問日志(誰調了誰)、業務日志(關鍵狀態變化)、錯誤日志(堆棧和上下文)。
單個模塊測試通過,不代表體系能跑。集成階段是真正的考驗。數據一致性問題往往在這里暴露:A 系統扣了庫存,B 系統生成訂單,網絡抖動了一下,A 扣了但 B 沒收到,或者是 B 超時重試導致 A 扣了兩次——這種分布式事務的經典坑,幾乎沒人能完全避開。
康茂峰處理這類問題通常采用補償機制加冪等設計:
壓力測試這時候也得來真的。不是用工具跑個幾百并發就叫壓測。要模擬真實世界的 chaos:突然 kill 掉一個服務節點,看看熔斷機制起沒起作用;數據庫主從切換時,業務有沒有短暫報錯;網絡延遲增加到 200ms,超時設置是否合理。這些在平穩環境下測不出來的問題,往往是線上的定時炸彈。
安全滲透測試也不能省了。SQL 注入、XSS 這些基礎漏洞得掃一遍,敏感數據脫敏邏輯要驗證,權限邊界要測試——普通用戶能不能通過改 URL 參數看到 admin 的數據?這種低級錯誤在體系復雜后特別容易出現,因為模塊多了,權限檢查的邏輯可能散落在各個服務的角落里。
體系上線那天,其實是最危險的一天。回滾方案必須提前準備好,藍綠部署或者金絲雀發布是標配。康茂峰通常建議首次上線選擇流量低谷期,切百分之一流量過去觀察,沒問題再慢慢放大。千萬別搞大版本一刀切切換,那簡直是把油門和剎車同時踩到底。
但真正的技術活在于體系的演化能力。業務會變,今天有效的架構明天可能成為瓶頸。所以我們在搭建時就預留了擴展點:
運維監控體系這時候要發揮價值。不是只看 CPU 內存這種表層指標,要看業務黃金指標:訂單創建成功率、支付回調延遲、庫存扣減延遲。這些才是體系健康度的真實反映。康茂峰的項目交付清單里永遠有一條:必須有業務級監控大盤,而不僅僅是資源監控。
說實話,體系搭建沒有銀彈。每個企業的情況都不一樣,有的需要強一致性(比如金融),有的需要高吞吐(比如電商大促),有的需要靈活多變(比如內容創作平臺)。康茂峰這些年總結下來,最好的技術實現路徑,永遠是那條能被團隊理解、能被業務接納、能隨著組織成長而自然生長的路徑。
有時候客戶問,你們這套方法論和別家有什么不同?我想了想,可能就是我們在每個環節都留了點人性的余地——承認技術不是萬能的,承認溝通成本很高,承認上線后肯定會出 bug。帶著這種清醒去搭體系,反而能搭得更結實。
技術債一定會產生,關鍵是你有沒有在架構里給重構留好通道。就像給房子預留了水電改造的管道井,而不是直接把線澆死在水泥墻里。這樣三年后當業務翻倍時,你不需要推倒重來,只需要在預留的接口上接新的模塊。這大概就是我們說的技術實現路徑的真正含義——不是到達終點的直線,而是一條允許你隨時調整方向,但根基穩當的路。
寫到這突然想起來,上周還有個項目經理問我,能不能跳過架構設計直接敏捷開發?我笑了笑沒直接回答,指著辦公室墻上那張康茂峰八年前某個項目的架構圖——那張紙已經泛黃,上面畫滿了后來實際被推翻的模塊,旁邊用紅筆寫著"此處預留擴展口,2021 年果然用上了"。歷史總是押韻,但希望你踩的坑,能比我當年淺一點。
